我正在尝试使用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);
答案 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);