首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么PHP中没有使用Ajax接收这个多维数组?

为什么PHP中没有使用Ajax接收这个多维数组?
EN

Stack Overflow用户
提问于 2021-01-14 21:28:52
回答 1查看 28关注 0票数 0

我使用Ajax调用发布了一个来自JS的多维数组,但我没有在PHP中接收到它:

代码语言:javascript
复制
   $.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%肯定我以前做过这件事,而且它总是成功的,为什么这次不起作用是我力所能及的!

编辑:

我就是这样创建数组的:

代码语言:javascript
复制
  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);      
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 21:44:44

您应该使obj成为一个普通的对象,而不是数组。虽然您可以将命名属性添加到数组中(因为数组只是一种对象),但是当jQuery序列化数组时,这些属性将被忽略。

因此,将变量声明更改为:

代码语言:javascript
复制
let obj = {};

或者您可以完全摆脱obj变量,只需:

代码语言:javascript
复制
edited_rfid_arr.push({rfid, id});

通过使用map(),您可以摆脱整个循环。

代码语言:javascript
复制
var edited_rfid_arr = input_fields.map(field => 
    ({rfid: field.value, id: field.attributes['data-rfid_id'].value}));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65727170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档