如何根据数组的长度构建参数?

时间:2013-02-28 14:50:20

标签: asp.net-mvc jquery

function BuildParams(arr)
{

// arr is an Array
// how to build params based on the length of the array?
// for example when arr.Length is 3 then it should build the below:

var params = {                       
                        'items[0]' : arr[0],       
                        'items[1]' : arr[1],
                        'items[2]' : arr[2]
             },

return params;

}

然后我希望能够将它发送到我的ajax get:

var arr = ['Life', 'is', 'great'];

 $.get('/ControllerName/ActionName', BuildParams(arr))
                .done(function(data, status) {
                    alert("Data: " + data + "\nStatus: " + status);
                })
                .fail(function(data) {
                    alert(data.responseText);
                });

3 个答案:

答案 0 :(得分:1)

var result = {}
jQuery.each(['Life', 'is', 'great'], function(index, value){
    result['items[' + index + ']'] = value; 
});

jQuery.each

  

通用迭代器函数,可用于无缝迭代   对象和数组。数组和数组类似的对象   重复长度属性(例如函数的参数对象)   按数字索引,从0到长度-1。其他对象通过迭代   他们的命名属性。

答案 1 :(得分:0)

迭代数组,将数组中的每个元素添加为params对象的新属性:

var params = {}; // start with an empty object
for(var i = 0; i < arr.length; i++) {
    params["items[" + i + "]"] = arr[i];
}

return params; // return the populated params object

答案 2 :(得分:0)

BuildParams(arr)更改为:

{items: arr}

jQuery会将对象正确地序列化为查询字符串,包括具有数组项的对象。