如何使用jquery将包含所有元素的数组传递给php
How to pass array with all elements with jquery to php
我正在尝试将数组从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 个元素。即使我选择多个元素。我做错了什么?
这有效,也许比使用 FormData
更简单。(请注意,我已将name[]
更改为name
,phone[]
更改为phone
。我还将 AJAX 调用移到了each
循环之外。
.HTML:
<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 />
JavaScript:
$(document).ready(function() {
$(":checkbox").on('change', function() {
var mygroup = {};
$(':checkbox:checked').each(function(i) {
var val = this.value;
var name = this.name;
mygroup[name] = (mygroup[name] || []).concat([val]);
});
$.ajax({
type: "POST",
url: 'testdraft1.php',
data: mygroup,
success: function(data) {
$("#result").html(data);
}
});
});
});
编辑
这一行有点令人困惑:
mygroup[name] = (mygroup[name] || []).concat([val]);
这是一个更简单的版本:
// initialize with an empty array if needed
if (mygroup[name] === undefined) {
mygroup[name] = [];
}
// append the most recent value to the array
mygroup[name].push(val);
你在 each 循环中调用 ajax 帖子,这意味着如果你选中五个框,你将为每个调用的每次迭代发送一个单独的帖子。
这意味着第一篇文章将只有一个复选框,第二篇帖子将有两个复选框,依此类推。
除非你真的想这样做,否则你需要在ajax调用之前关闭每个循环。
这并不能解决名称问题,但它将解决您只收到一个发送到 php 的复选框的原因。
你的代码有多个问题,
- AJAX 代码应该在函数
.each
之外。 - 在事件
change
定义数组。 - 您不能像这样在 AJAX 请求中直接发送数组。为此,请使用 FormData。
所以像这样更改你的代码,
$(document).ready(function() {
var group = []; //DEFINED THE ARRAY
$(":checkbox").on('change', function() {
$(':checkbox:checked').each(function(i) {
var val = this.value;
var name = this.name;
var dataObject = {};
dataObject.name = name;
dataObject.val = val;
group.push(dataObject);
});
var fd = new FormData();
for (var i = 0; i < group.length; i++) {
fd.append(group[i].name, group[i].val);
}
$.ajax({
type: "POST",
url: 'testdraft1.php',
data: fd,
success: function(data) {
$("#result").html(data);
}
});
});
});
<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=[]; //DEFINED THE ARRAY
var mygroup = {}; // DEFINED THE OBJECT
$(':checkbox:checked').each(function(i){
var val= this.value;
var id = this.id;
mygroup[id]=val; //PUSH VALUES TO THE OBJECT mygroup
var all = id+"="+val;
group.push(all); // PUSH ALL CHECKBOX VALUES TO ARRAY
$.ajax({
type: "POST",
url: 'testdraft1.php',
data : mygroup, //TRIED WITH group and all also. Doesn't work.
success: function(data){
$("#result").html(data);
}
});
});
});
});
使用相同的名称,但更改名称,而是更改 id 名称,它将对您有用
相关文章:
- 将数组从PHP传递到Javascript
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 如何使用Javascript将空数组发送到PHP服务器
- 调用php数组中的JS函数
- PHP中的数组输出
- 将带有多维数组的表单从Javascript提交到PHP
- 将数组从javascript格式化为php的更好方法,反之亦然
- 将PHP变量分配给PHP数组
- php数组转换为javascript
- 如何用javascript打印php数组
- 将PHP数组传递给js变量
- 如何在php中读取没有任何键的JSON数组
- 从javascript访问属性多端数组PHP
- 替换辅助数组 PHP 中的值
- JavaScript发送变量,但插入数组PHP不能正常工作
- 在数组php中中断数组
- 如何通过javascript数组php laravel4
- 多维json编码关联数组php到JS
- (删除重复)重新索引多维数组PHP jquery
- 我可以't在jQuery中获取数组PHP编码