如何将相同类型的多个参数传递给jQuery Get

时间:2012-10-13 19:45:15

标签: javascript jquery

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

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

jQuery似乎用第二个实例覆盖q的第一个实例而且只发送1.以任何方式解决这个问题?

这是我尝试使用的代码:

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

5 个答案:

答案 0 :(得分:26)

尝试:

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

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

jQuery.ajaxSettings.traditional = true;

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

答案 1 :(得分:10)

另一种解决方法,不需要encodeURIComponent()或弄乱jQuery.ajaxSettings.traditional = true;我不愿意做,因为我不想干涉(甚至暂时)与其他部分该网站可能同时进行。

时:

 var params=[ 
       {name:"q", value:title},
       {name:"q", value:text}
 ];
 $.get(url, params, mySuccessFunction);

答案 2 :(得分: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);

答案 3 :(得分:1)

您可以像这样编写网址:

$.get(
   url+'?q='+encodeURIComponent(text)+'&q='+encodeURIComponent(title)+'&otherParam='+encodeURIComponent('x'),
   mySuccessFunction
);

答案 4 :(得分:-1)

事情非常简单,并在jQuery网站http://api.jquery.com/jquery.param/中进行了描述。

首先创建一个参数对象

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);