【问题标题】:how to pass json in query string parameter with jquery $.get如何使用 jquery $.get 在查询字符串参数中传递 json
【发布时间】: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


【解决方案1】:
var params = {
  sort: '...',
  _filters: JSON.stringify({
    'key': 'value'
  })
};

$.get('API/MyGet', params, function(data) {
  alert( JSON.stringify(data) );
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2011-10-31
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    相关资源
    最近更新 更多