在javascript中创建关联数组/哈希

时间:2010-09-08 09:43:59

标签: javascript jquery ajax

我有一个包含不同检查框组的表单,并尝试将所有选定的值传递到数组中,然后将该数据传递给ajax请求。

$('#accessoriesOptions input').each(function(index, value){
    if($(this).attr('checked') ){
        var newItem =[];
        var obj = {};
        obj[$(this).attr('value')] = $(this).attr('name'); //I have an hash table with the key-value
        wizard.searchArray.push(obj);
    }            
})

$.ajax({
   data : wizard.searchArray
})

我得到了一个wizard.searchArray,如:

   [0] = {'acc_1' : 'vase'},
   [1] = {'acc_3' : 'ceramic'}

我需要创建一个键值,因为我使用键来计算要使用的过滤部分。

问题

当我执行ajax请求时,我从firebug看到请求为:

/向导演示/未定义未定义=&安培;未定义未定义=

1 个答案:

答案 0 :(得分:5)

在这种情况下,只需将属性添加到obj并直接使用它,即用作data属性时将获得序列化属性的对,如下所示:

var obj = {};
$('#accessoriesOptions input').each(function(index, value){
    if(this.checked){
        obj[this.value] = this.name;
    }            
})

$.ajax({
   data : obj
});

虽然这是从正常<form>提交中退出的,但如果这是你想要的,那就改为:

obj[this.name] = this.value;

如果您想发送整个表单,可以使用更短/内置的.serialize()方法:

$.ajax({
   data : $("#accessoriesForm").serialize()
});