在jquery中传递数组作为查询字符串

本文关键字:查询 字符串 数组 jquery | 更新日期: 2023-09-27 18:19:08

我在jquery中创建了一个名称为array[]的字符串数组,并将值推入其中。

如何在查询字符串中发送这个数组?

例如window.location.href('ViewData?array');

我如何从jquery本身的查询字符串返回数组数据?请建议吗?

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