在jquery中传递数组作为查询字符串
本文关键字:查询 字符串 数组 jquery | 更新日期: 2023-09-27 18:19:08
我在jquery中创建了一个名称为array[]
的字符串数组,并将值推入其中。
如何在查询字符串中发送这个数组?
例如window.location.href('ViewData?array');
我如何从jquery本身的查询字符串返回数组数据?请建议吗?
这很容易用jQuery实现,因为它有一个叫做param()的辅助函数。
var myData = {
name: "John Doe",
age: 23,
children: [{
name: "Jane Doe",
age: 13,
children: []
},
{
name: "John Doe Jr.",
age: 16,
children: []
}
],
}
var p = $.param(myData)
结果: "name=John+Doe&age=23&children%5B0%5D%5Bname%5D=Jane+Doe&children%5B0%5D%5Bage%5D=13&children%5B1%5D%5Bname%5D=John+Doe+Jr.&children%5B1%5D%5Bage%5D=16"
你可以这样使用:
window.location = "/MyController/MyAction?" + p;
关于从查询字符串中获取参数,请参考以下问题:如何在JavaScript中获取查询字符串值?
你可以做的另一件事是使用ajax调用,这样你就不必自己序列化数据,因为它会自动为你完成。
$.ajax({
url: "/MyController/MyAction",
data: myData,
dataType: "json",
type: "POST",
success: function(data){
//'data' is your response data from the Action in form of a javascript object
}
})
我想这就是你要找的。如果我说错了,请告诉我。我从这个链接复制了$.parseParams
。你也可以在这里看到工作代码
(function($) {
var re = /([^&=]+)=?([^&]*)/g;
var decodeRE = /'+/g; // Regex for replacing addition symbol with a space
var decode = function (str) {return decodeURIComponent( str.replace(decodeRE, " ") );};
$.parseParams = function(query) {
var params = {}, e;
while ( e = re.exec(query) ) {
var k = decode( e[1] ), v = decode( e[2] );
if (k.substring(k.length - 2) === '[]') {
k = k.substring(0, k.length - 2);
(params[k] || (params[k] = [])).push(v);
}
else params[k] = v;
}
return params;
};
})(jQuery);
var s=["abc", "xyz", "123"];
var queryString=$.param({a:s});
console.log("object to query string: ", queryString);
console.log("query string to object: ", $.parseParams(queryString));