【发布时间】:2016-11-20 23:51:47
【问题描述】:
我正在尝试将数组从 jQuery 传递给 PHP。
<input type="checkbox" id="name1" name="name[]" value="name1"> Name1
<input type="checkbox" id="name2" name="name[]" value="name2"> Name2
<input type="checkbox" id="name3" name="name[]" value="name3"> Name3<br />
<input type="checkbox" id="phone1" name="phone[]" value="samsung"> Samsung
<input type="checkbox" id="phone2" name="phone[]" value="nokia"> Nokia
<input type="checkbox" id="phone3" name="phone[]" value="motorola"> Motorola<br />
$(document).ready(function() {
$(":checkbox").on('change', function() {
var group = [];
var mygroup = {};
$(':checkbox:checked').each(function(i){
var val = this.value;
var name = this.name;
mygroup[name] = val;
var all = name + "=" + val;
group.push(all);
$.ajax({
type: "POST",
url: 'testdraft1.php',
data: mygroup, // TRIED WITH group and all also. Doesn't work.
success: function(data) {
$("#result").html(data);
}
});
});
});
});
使用此代码,数组被传递给 PHP,但只有 1 个元素。即使我选择了多个元素。我做错了什么?
【问题讨论】:
-
您的所有输入都具有相同的 ID 和名称。改变它
-
这是因为您在每次复选框发生更改时都在初始化数组。将数组移出
$(":checkbox").on('change', function() { -
改了,还是一样。仍然没有包括所有元素。
-
问题是因为您每次都覆盖对象的属性,因为复选框都具有相同的名称。您还为每个复选框发送了 AJAX 请求,我认为这不是您想要的。
-
AJAX 调用应该在 change 函数中,而不是在
each循环中。
标签: javascript php jquery arrays ajax