我在jquery中创建了一个名为array[]
的字符串数组,并将值推送到它。
如何在查询字符串中发送此数组?
例如window.location.href('ViewData?array');
如何从jquery本身的查询字符串中获取数组数据? 请指教?
答案 0 :(得分:3)
使用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;
至于从查询字符串中获取参数,请参阅以下问题:How can I get query string values in 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
}
})
答案 1 :(得分:1)
我认为这就是你要找的东西。如果我弄错了,请告诉我。我从this链接复制了$.parseParams
。您还可以查看工作代码here
(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));