我有一个包含不同检查框组的表单,并尝试将所有选定的值传递到数组中,然后将该数据传递给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看到请求为:
?/向导演示/未定义未定义=&安培;未定义未定义=
答案 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()
});