如何将同一类型的多个参数传递给jQuery Get
我正在尝试使用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);
尝试:
var params = { "otherParam": "x", "q": [ text, title ] };
编辑 – 更多信息:像这样的数组值参数由jQuery专门处理。 为了安抚许多常见的服务器框架,默认情况下(因为我认为是版本1.5或1.6),这些将导致参数名称包含“[]”(开括号和闭括号字符)作为后缀(没有数字,与我的错误相反)评论如下)。 如果你不想那样,你可以设置
jQuery.ajaxSettings.traditional = true;
它只是“q”而不是“q []”。
另一种解决方法,不需要encodeURIComponent()
或搞乱jQuery.ajaxSettings.traditional = true;
我不想这样做,因为我不想干扰(甚至暂时)网站的其他部分可能同时做什么。
方法是:
var params=[ {name:"q", value:title}, {name:"q", value:text} ]; $.get(url, params, mySuccessFunction);
另一种不修改jQuery.ajaxSettings.traditional = true;
是使用$.param()
http://api.jquery.com/jQuery.param/
所以这样的事情:
var params = { "otherParam": "x", "q": [ text, title ] }; $.get(url, $.param(params, true), mySuccessFunction);
您可以像这样编写URL:
$.get( url+'?q='+encodeURIComponent(text)+'&q='+encodeURIComponent(title)+'&otherParam='+encodeURIComponent('x'), mySuccessFunction );
事情非常简单,并在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);