代码之家  ›  专栏  ›  技术社区  ›  user13286

将附加数组推送到通过AJAX发送的序列化表单数据

  •  0
  • user13286  · 技术社区  · 7 年前

    我有一个使用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 将数组推送到序列化的表单数据后,它会正确地显示额外的数组。然而,当我试图 print_r($_POST) 在我的PHP表单中,无法访问附加数组:

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

    这个 dynamic-array 没有与其关联的数组。

    正确的方法是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   IceMetalPunk    7 年前

    从返回的序列化数组的格式 serializeArray 是具有名为 key value 价值 密钥,因此无法在后端正确处理它。尝试 {name: 'dynamic-array', value: arr}

    推荐文章