Javascript 为什么这个多维数组不是';使用Ajax在PHP中接收不到?
我使用Ajax调用从JS发布了一个多维数组,但我没有在PHP中收到它:Javascript 为什么这个多维数组不是';使用Ajax在PHP中接收不到?,javascript,php,arrays,ajax,Javascript,Php,Arrays,Ajax,我使用Ajax调用从JS发布了一个多维数组,但我没有在PHP中收到它: $.ajax({ type: 'post', url: 'external_submit.php', dataType: "json", data: { edit_rfid_changes_submit: edit_rfid_changes_submit, edited_rfid_arr: edited_rfid_arr } 我100%
$.ajax({
type: 'post',
url: 'external_submit.php',
dataType: "json",
data: {
edit_rfid_changes_submit: edit_rfid_changes_submit,
edited_rfid_arr: edited_rfid_arr
}
我100%确信我以前做过这件事,而且它总是成功的,这次为什么不工作是我无法理解的
编辑:
以下是我创建阵列的方式:
var edited_rfid_arr = [];
for (var i = 0; i < input_fields.length; i++) {
let obj = [];
let rfid = input_fields[i].value;
let id = input_fields[i].attributes['data-rfid_id'].value;
obj['rfid'] = rfid;
obj['id'] = id;
edited_rfid_arr.push(obj);
}
var编辑的\u rfid\u arr=[];
对于(var i=0;i
您应该使obj
成为普通对象,而不是数组。尽管可以向数组添加命名属性(因为数组只是一种对象),但当jQuery序列化数组时,这些属性将被忽略
因此,将变量声明更改为:
let obj = {};
或者您可以完全去掉obj
变量,只需执行以下操作:
edited_rfid_arr.push({rfid, id});
使用map()
,您可以摆脱整个循环:
显示您的PHP代码。您的
edited\u rfid\u arr
值无效。在JS中,只能在对象中使用key:value
,不能在数组中使用。在PHP中,它应该是[{rfid:“45456”,id:“69”},
,然后您应该能够通过$\u POST['edited\u rfid\u arr'][$i]['rfid']
和$\u POST['edited\u rfid\u arr'][$i]['id']
@Barmar pelase检查编辑的问题,我以前错误地键入了错误的数组格式。现在问题已更正,请使用让obj={}
。
var edited_rfid_arr = input_fields.map(field =>
({rfid: field.value, id: field.attributes['data-rfid_id'].value}));