通过 ajax 在 post 之后获取关联数组

Get associative array after post via ajax

我需要向服务器发送一个表单和一个 array/string。

我的 Ajax 看起来像这样:

 var formData = $("#formpv").serialize();
        $.ajax({    
            type: 'POST',
            url: 'scripts/formIntoDB.php',
            data: formData,

通过这种方式,我可以像这样在 PHP 中检索表单数据:

$_POST['name'];
//Output "Foobar"

但是当我发送序列化的表单数据和另一个这样的参数时:

 var formData = $("#formpv").serialize();
 var posData = "TEST";

        $.ajax({    
            type: 'POST',
            url: 'scripts/formIntoDB.php',
            data: {form: formData, pos: posData},

现在尝试在 PHP 中获取名称:

$_POST['form']['name'];

这只会抛出 PHP 解析错误:语法错误,意外的 '['

当我像这样发送数据时有什么不同: {form: formData, pos: posData}数据:表单数据 ?

问题是因为 formData 中的字符串变成了 double-wrapped,即。 key/value 对字符串中的 key/value 对字符串。由于只有顶层被反序列化,您的 PHP 代码无法以您想要的方式读取第二层。

要解决此问题,您需要手动 创建整个对象,例如:

$.ajax({    
  type: 'POST',
  url: 'scripts/formIntoDB.php',
  data: {
    form: {
      name: $('#yourNameInput').val(),
      // all your other inputs here...
    }, 
    pos: posData
  }
});

或者您可以保持请求数据不变,只需使用表单中的隐藏输入添加 pos