【发布时间】:2016-09-11 15:21:28
【问题描述】:
jquery $.get 应该发送单个查询字符串参数_filters,其值为json字符串:
API/MyGet?_filters='{groupOp:"AND",rules:[{field:"Toode",op:"eq",data:"xxxx"}]}'&sort=code
我试过了
$.get( 'API/MyGet', {
_filters:{ groupOp:"AND",
rules:[{field:"Toode", op:"eq", data:'xxxx'}]
},
sort: 'code'
},
function(data) {
alert( JSON.stringify(data) );
}
);
但 Chrome 开发者工具显示这会创建不正确且奇怪的查询字符串:
_filters[groupOp]=AND&_filters[rules][0][field]=Toode&_filters[rules][0][op]=eq&_filters[rules][0][data]=
如何强制 jquery get 传递正确的查询字符串?
【问题讨论】:
-
你真的需要那个“
_filters”对象吗?$.get( 'API/Entity/ToodeL', { groupOp:"AND", rules:[{field:"Toode", op:"eq", data:'xxxx'}] } -
是的。在实际应用中,查询字符串有更多参数:页码、页面大小、排序顺序等。_filters 可以包含更复杂的搜索条件。所以 _filters 必须是单个参数,其值为 json 字符串。
-
@Developer 我修改了问题。还添加了排序参数并将 _filters 值更改为字符串
-
我可能错了,但是 IMO 以这种方式构造的查询字符串是它应该的方式。您能否提及您期望的查询字符串的格式?
-
简短:你不能。此查询字符串由
$.serialize()方法生成。您需要扩展此方法的功能 - 或自己预处理查询,即$.get('path/to', 'filters={jsonstring}');
标签: javascript jquery json ajax getjson