10

我正在尝试使用 jQuery $.get 从站点获取一些数据。我需要设置2个相同类型的参数:

..&q=Some Text&q=Some other text

jQuery 似乎用第二个和只发送 1 覆盖了 q 的第一个实例。有什么办法解决这个问题吗?

这是我试图使用的代码:

var params = {
       "otherParam":"x",
       "q":text,
       "q":title
};
$.get(url, params, mySuccessFunction);
4

5 回答 5

27

尝试:

var params = {
  "otherParam": "x",
  "q": [ text, title ]
};

编辑— 更多信息:像这样的数组值参数由 jQuery 特殊处理。为了安抚许多常见的服务器框架,默认情况下(我认为从 1.5 或 1.6 版开始)这些将导致参数名称包含“[]”(左括号和右括号字符)作为后缀(没有数字,与我的错误相反在下面评论)。如果你不想这样,你可以设置

jQuery.ajaxSettings.traditional = true;

它只是“q”而不是“q[]”。

于 2012-10-13T19:46:01.717 回答
10

还有另一种解决它的方法,不需要encodeURIComponent()或弄乱 jQuery.ajaxSettings.traditional = true;我不想做的事情,因为我不想(即使是暂时的)干扰网站的其他部分可能同时做的事情。

是:

 var params=[ 
       {name:"q", value:title},
       {name:"q", value:text}
 ];
 $.get(url, params, mySuccessFunction);
于 2012-10-15T14:24:21.733 回答
5

另一种无需修改的方法jQuery.ajaxSettings.traditional = true;是使用$.param() http://api.jquery.com/jQuery.param/

所以是这样的:

var params = {
  "otherParam": "x",
  "q": [ text, title ]
};

$.get(url, $.param(params, true), mySuccessFunction);
于 2013-11-20T23:55:50.853 回答
1

你可以这样写 URL:

$.get(
   url+'?q='+encodeURIComponent(text)+'&q='+encodeURIComponent(title)+'&otherParam='+encodeURIComponent('x'),
   mySuccessFunction
);
于 2012-10-13T19:47:42.867 回答
-1

事情很简单,在 jQuery 网站http://api.jquery.com/jquery.param/中有描述。

首先创建一个 params 对象

var params=[{
    name: 'param1',
    value: 'hello'
},
{
    name: 'param1',
    value: 'alex'
}];

接下来创建要发送到服务的数据。

var data = jQuery.param(params);

该对象可以作为 ajax 请求的数据参数插入。我喜欢使用设置对象

var settings={
    url: 'api/domain/timeline',
    type: 'get',
    contentType: 'application/json',
    data: data
    };
$.ajax(settings);
于 2016-03-01T13:02:23.647 回答