0
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 获取:

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);
                });
4

3 回答 3

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

jQuery .每个:

通用迭代器函数,可用于无缝迭代对象和数组。具有长度属性的数组和类数组对象(例如函数的 arguments 对象)通过数字索引进行迭代,从 0 到 length-1。其他对象通过其命名属性进行迭代。

于 2013-02-28T14:55:46.917 回答
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
于 2013-02-28T14:53:39.633 回答
0

更改BuildParams(arr)为:

{items: arr}

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

于 2013-02-28T15:10:54.407 回答