我需要在数据对象中传递一个对象,但它不起作用
我使用我在这个网站上找到的以下函数,非常有用,将表单数据转换为 JSON
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
然后我需要将该对象作为子对象传递,但它不起作用。过滤器甚至没有显示在检查器的查询字符串参数中
var filters = $('.filtersForm').serializeObject();
$.ajax({
type: 'GET',
data: {script:'search',page:page,filters:filters},
success: function(data){
}
});
看看图片中如何缺少“滤镜”
有人可以解释一下为什么我不能传递这样的对象吗?
最佳答案
试试这个:
$.ajax({
type: 'POST',
data: JSON.stringify({
script: 'search',
page: page,
filters: filters
}),
contentType: 'application/json'
});
- 将类型从
GET
更改为POST
。这将允许您发送请求正文。 - 使用内置 JSON 对象对您的 data 参数进行字符串化,将 JS 对象字符串化为 JSON 格式的字符串。 (较旧的浏览器可能没有此内置对象,在这种情况下,请使用 json2.js 添加它)
- 将 contentType 设置为
application/json
。这基本上表明请求正文是这种类型...这是因为我们刚刚将其字符串化为 JSON。
关于javascript - jquery ajax : object in data object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17600175/