Javascript 为什么这个多维数组不是';使用Ajax在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调用从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%确信我以前做过这件事,而且它总是成功的,这次为什么不工作是我无法理解的

编辑:

以下是我创建阵列的方式:

  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}));