我需要在数据对象中传递一个对象,但它无法正常工作
我使用我在这个网站上找到的以下函数,非常有用,将表单数据转换为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){
}
});
了解图片中缺少“过滤器”
有人可以解释为什么我不能传递这样的对象吗?
答案 0 :(得分:4)
请改为尝试:
$.ajax({
type: 'POST',
data: JSON.stringify({
script: 'search',
page: page,
filters: filters
}),
contentType: 'application/json'
});
GET
更改为POST
。这将允许您发送请求正文。application/json
。这基本上表明request-body属于这种类型......这是因为我们只是将它字符串化为JSON。答案 1 :(得分:0)
尝试指定您的filters
例如在try中:
jsonfilter = JSON.stringify(filters);
如果您使用MVC和ASP.Net,您可以尝试
在您的HTTPWebMethode中,jsonResult为Return,您可以尝试指定参数
public JsonResult myPostMethode(string script,object page,List<object> filters){
//make some usefull
var model = script;
return(model,JsonRequestBehavior.AllowGet);
}