推额外的阵列到序列化形式数据通过AJAX发送

时间:2019-01-31 20:05:31

标签: php arrays serialization

我有一个表格,我使用AJAX提交。为了将数据从表单获取到PHP脚本,我对数据进行了序列化。除了这些数据之外,我还要包括来自表单外部的动态数据的另一个数组。这是我所拥有的示例:

$(function() {
  var $form = $('form'),
      formData = $form.serializeArray(),
      arr = ["Saab", "Volvo", "BMW"]; /* Just an example array */
  
  formData.push({name: 'dynamic-array', arr});
  
  console.log(formData);
  
  /*
  $.ajax({
    type: 'POST',
    url: 'http://example.com',
    data: formData
  }).done(function() {
    console.log('Submitted');
  });
  */
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input name="name" type="text" value="Lorem" />
  <input name="number" type="text" value="Ipsum" />
</form>

因此,当我控制台日志formData阵列推到序列化形式的数据后,它正确地表明,附加的阵列。但是,当我尝试以PHP形式print_r($_POST)时,无法访问其他数组:

Array ( [name] => Lorem [number] => Ipsum [dynamic-array] => )

dynamic-array没有与之关联的数组。

正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

serializeArray返回的序列化数组的格式是对象数组,其属性名为key,该属性保存键名,而属性名为value,该属性保存键名。值。您的新对象没有value键,因此后端没有正确处理它。尝试使用{name: 'dynamic-array', value: arr}