从JavaScript将表单提交到PHP后如何获得多维数组?

问题描述 投票:0回答:1

其中包含php和javascript的一个php文件。我在javascript部分定义了一个多维数组。我可以在控制台中看到“键”和“值”的正确输出,但是提交表单后我没有将数组放入php。我做错了吗?

<?php
echo "Postcmd: ".$_POST["postcmd"];
print_r($_POST["postcmd"]);
?>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<script type="text/javascript">
var postcmd =[];
var key;
function formsubmitplus(ele) {
    postcmd.push({"key": ele.id, "value": ele.value});
    for (key in postcmd) {
      if (postcmd.hasOwnProperty(key)) {
        console.log(postcmd[key])
      } 
    }

    request = $.ajax({
        url: "/index.php",
        type: "post",
        data: postcmd
    });

} 
</script>
javascript php arrays ajax post
1个回答
0
投票

根据jQuery文档,

要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它被附加到GET请求的URL上。请参阅processData选项以防止这种自动处理。对象必须是键/值对。如果value是一个Array,则jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。

因此,您的data字段必须包含一个对象(例如{foo: bar, foo_again: bar_again};在PHP中,它将被读取为$_POST['foo'] == "bar")。但是,您的代码提交了一个包含一个元素的数组:指定的对象。另外,PHP不会神奇地将您的JS数组/对象转换为PHP数组。您必须解析传递到PHP的字符串,并将其转换为所需的数组。

如果打印$_POST,则可以看到确切传递给PHP的内容。这可以帮助您了解正在发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.