Javascript 尝试从对Java的AJAX调用解析JSON对象时出现异常
** 更新代码 ** 我的Javascript/Ajax代码:Javascript 尝试从对Java的AJAX调用解析JSON对象时出现异常,javascript,ajax,json,struts2,Javascript,Ajax,Json,Struts2,** 更新代码 ** 我的Javascript/Ajax代码: $(function() { $("#create_obd").bind("click", function(event) { var soNumber = []; $('#sales_order_lineItems input[type=checkbox]:checked').each(function(index) { var
$(function() {
$("#create_obd").bind("click", function(event) {
var soNumber = [];
$('#sales_order_lineItems input[type=checkbox]:checked').each(function(index) {
var row = $(this).parent().parent();
var rowcells = row.find('td');
var soRowData = {
so_number:rowcells[1].innerText
};
soNumber.push(soRowData);
}); //loop ends
var soNumbers = JSON.stringify(soNumber);
alert(soNumbers);
$.ajax({
type: "POST",
url: server_ip_address + "/createobdaction",
data: soNumbers,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
});
});
package com.app.action;
import java.util.List;
import com.app.bean.SONumber;
public class CreateOBDAction {
private List<SONumber> soNumbers;
public String createOBD() {
System.out.println(soNumbers.size());
return "jsonCreateOBDSuccess";
}
public List<SONumber> getSoNumbers() {
System.out.println("Getter................");
return soNumbers;
}
public void setSoNumbers(List<SONumber> soNumbers) {
System.out.println("Setter............");
this.soNumbers = soNumbers;
}
}
我的Java代码:
$(function() {
$("#create_obd").bind("click", function(event) {
var soNumber = [];
$('#sales_order_lineItems input[type=checkbox]:checked').each(function(index) {
var row = $(this).parent().parent();
var rowcells = row.find('td');
var soRowData = {
so_number:rowcells[1].innerText
};
soNumber.push(soRowData);
}); //loop ends
var soNumbers = JSON.stringify(soNumber);
alert(soNumbers);
$.ajax({
type: "POST",
url: server_ip_address + "/createobdaction",
data: soNumbers,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
});
});
package com.app.action;
import java.util.List;
import com.app.bean.SONumber;
public class CreateOBDAction {
private List<SONumber> soNumbers;
public String createOBD() {
System.out.println(soNumbers.size());
return "jsonCreateOBDSuccess";
}
public List<SONumber> getSoNumbers() {
System.out.println("Getter................");
return soNumbers;
}
public void setSoNumbers(List<SONumber> soNumbers) {
System.out.println("Setter............");
this.soNumbers = soNumbers;
}
}
Struts.xml
<action name="createobdaction" class="com.app.action.CreateOBDAction"
method="createOBD">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
<result name="jsonCreateOBDSuccess" type="json" />
</action>
符合事实的
例外情况
15:32:00092错误JSONInterceptor:34-无法反序列化JSON
来自请求的对象15:32:00093调试调度程序:80-异常
处理请求期间发生:无法反序列化JSON对象
从请求org.apache.struts2.json.JSONException:无法
在请求中反序列化JSON对象
org.apache.struts2.json.JSONInterceptor.intercept(JSONInterceptor.java:117)
- 在你的项目中包含这些信息李>
- 为来自页面的JSONized对象的每个字段创建属性、getter和setter李>
- 将JSON拦截器添加到操作使用的拦截器堆栈中
- 就这样
谢谢安德里亚的回复。你能帮我更好地理解这一点吗。事实上,我对这一点非常陌生,因此,可能会问一些非常基本的问题。我已经在我的动作课上包括了这三个。导入org.json.JSONArray;导入org.json.JSONException;导入org.json.JSONObject;插件还需要什么?在我的Action类中还包括getter/setter。更新了上面的代码。尝试将SONumber类设置为标准类,而不是内部类。现在InstantiationException@minchi尝试将数据:soNumbers更改为数据:{“soNumbers”:soNumbers},。