摘要:
jquery提交数组,会是这个样子:ids[]=5, ids[]=6, ids[]=7
问题的原因就在这里了,如果提交的是js数组,jquery擅自在提交参数后添加了“[]”
然后struts的拦截器就报:ONGL解析异常
网上搜到和我一样的问题
http://scorpio-jh.blog.sohu.com/150360289.html
但他是改源码,我不习惯这样去做,就仔细翻了下文档,发现可以这样去做。
用jQuery.param的最后那个参数去解决,仔细看文档的这个方法后面的例子
jquery提交数组,会是这个样子:ids[]=5, ids[]=6, ids[]=7
问题的原因就在这里了,如果提交的是js数组,jquery擅自在提交参数后添加了“[]”
然后struts的拦截器就报:ONGL解析异常
网上搜到和我一样的问题
http://scorpio-jh.blog.sohu.com/150360289.html
但他是改源码,我不习惯这样去做,就仔细翻了下文档,发现可以这样去做。
mydata=[1,2,3];
$.ajax({
url: "xxx.action",
type:"post",
dataType:"json",
data:jQuery.param(mydata,true),//重点
后面省略
用jQuery.param的最后那个参数去解决,仔细看文档的这个方法后面的例子
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));
alert(recursiveEncoded);
alert(recursiveDecoded);
//a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
//a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3
var shallowEncoded = $.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
alert(shallowEncoded);
alert(shallowDecoded);
//a=%5Bobject+Object%5D&b=1&b=2&b=3
//a=[object+Object]&b=1&b=2&b=3