Java 使用 Jquery Ajax 将数据从 jsp 发送到 struts2 动作类
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19408257/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Sending data from jsp to struts2 action class using Jquery Ajax
提问by sbala_20
I need to pass the form data from jsp to struts2 using jquery Ajax and receive back a JSON data from Struts2 action class. I have given the code below. When i am passing the AJAX data ,
我需要使用 jquery Ajax 将表单数据从 jsp 传递到 struts2,并从 Struts2 操作类接收回 JSON 数据。我已经给出了下面的代码。当我传递 AJAX 数据时,
url:'search.action?searchText='+ $('searchValue').value+'&environment='+$('environmentSelect').value
"undefined" is getting passed instead of the orijinal value from jsp to the action class.
“未定义”正在从 jsp 传递到操作类,而不是原始值。
My JSP
我的 JSP
<div id="tab0">
<s:form action="search" method="post">
<table style="margin-left: auto; margin-right: auto">
<tr>
<td>Environment:</td>
<td><select id="environmentSelect" name="environment">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select></td>
</tr>
<tr>
<td>Search Value:</td>
<td><input id="searchValue" name="searchText" type="text" /></td>
</tr>
<tr>
<td></td>
<td><button id="searchButton">Search</button></td>
</tr>
</table>
</s:form>
</div>
My Ajax function is:
我的 Ajax 函数是:
$("#searchButton").on("click",function(){
console.log("Inside Ajax call = "+ $('#tab0'));
$.ajax({
type: 'POST',
url:'search.action?searchText='+ $('searchValue').value+'&environment='+$('environmentSelect').value,
dataType: 'json',
success: function(data){
console.log(stringify(data));
s=data....
}
document.getElementById('displayLog').innerHTML=s;
});
return false;
});
Struts.xml:
Struts.xml:
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources" />
<constant name="struts.convention.default.parent.package" value="default"/>
<constant name="struts.ui.theme" value="simple" />
<package name="default" extends="struts-default" namespace="/">
<action name="search" class="com.SearchAction" method="execute">
<result name="success">/jsp/dummy.jsp</result>
<result name="error">/jsp/search.jsp</result>
</action>
</package>
</struts>
Action Class:
动作类:
public class SearchAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private String environment;
private String searchText;
public String getEnvironment() {
return environment;
}
public void setEnvironment(String environment) {
System.out.println("environment in setter new = "+ environment);
this.environment = environment;
}
public String getSearchText() {
return searchText;
}
public void setSearchText(String searchText) {
System.out.println("searchText in setter = "+ searchText);
this.searchText = searchText;
}
public String execute() {
Map map1 = new Map();
if(environment !=null && searchText != null){
map1= getMap(environment,searchText);
return success;
}
else{
return "error";
}
}
}
I did not incorporate the JSON logic yet. Struck with the "undefined" part.
我还没有合并 JSON 逻辑。遇到了“未定义”的部分。
采纳答案by Keerthivasan
You need to use .val()
function as below
您需要使用.val()
如下功能
$.ajax({
type: 'POST',
url:'search.action?searchText='+ $("#searchValue").val()+'&environment='+$("#environmentSelect").val(),
dataType: 'json',
success: function(data){
console.log(stringify(data));
}});
The other way is to
另一种方法是
$.ajax({
type: 'POST',
url:'search.action?searchText='+ document.getElementById('searchValue').value +'&environment='+document.getElementById('environmentSelect').value,
dataType: 'json',
success: function(data){
console.log(stringify(data));
}});
Hope this helps!
希望这可以帮助!
回答by Mohammed Hasan
Very Important (If you want to transfer data from Action Class to JQuery) without these 3 jar files you can not pass variable from Action Class to JQuery.
非常重要(如果您想将数据从 Action Class 传输到 JQuery),如果没有这 3 个 jar 文件,您将无法将 Action Class 中的变量传递给 JQuery。
- json-simple-1.1.jar
- struts2-json-plugin-2.3.1.2.jar
- commons-lang-2.6.jar
- json-simple-1.1.jar
- struts2-json-plugin-2.3.1.2.jar
- commons-lang-2.6.jar
Struts.xml
Struts.xml
<package name="json" namespace="/" extends="json-default">
<action name="action_name" class="com.ActionClass" method="execute">
<result type="json">
<param name="root">jsonData</param>
</result>
</action>
</package>