无法从JavaScript向php传递2D数组

iaqfqrcu  于 2023-03-21  发布在  PHP
关注(0)|答案(2)|浏览(111)

我试图通过一个2D数组从JavaScript到PHP使用 AJAX . Ajax说,这是成功的,但重定向到PHP页面后,但没有数据是在PHP页面设置.我已经尝试了两种方法,但他们都不能成功地发布数组.
数组看起来像:

num = [["StringA",0], ["StringB",1], ["StringC",2]];

这是我在JavaScript中尝试的第一个方法:

$.ajax({
    type: "POST",
    url: "database.php",
    contentType: 'application/json',            
    processData: false,
    data: { array : JSON.stringify(num) },
    success: function()
    {
        window.location = "database.php";
    }
 });

我也试过这个:

$.post("database.php", {array: num})
        .done(function(data){
        window.location = "database.php";
    });

在database.php中:

<?php
if (isset($_POST["array"])){
    echo "Data is set";
    print_r($array);
}
?>

它们都可以成功地重定向到database.php,但它们都没有在屏幕上显示任何内容。
我不熟悉 AJAX ,如何在数组发送后立即将数组发布到php页面?

gopyfrb3

gopyfrb31#

我知道这是一个老帖子,但它仍然没有答案(S)。

  • 您正在将contentType设置为application/json,这不是发送表单数据的正确内容类型。如果要发送表单数据,应使用默认内容类型application/x-www-form-urlencoded
  • 您在发送 AJAX 请求后立即重定向到PHP页面,而不等待响应。这意味着在重定向发生之前,数据可能尚未被服务器完全处理。
var num = [["StringA",0], ["StringB",1], ["StringC",2]];

$.ajax({
    type: "POST",
    url: "database.php",
    data: { array : num },
    success: function(response)
    {
        console.log(response); // log the response to the console
        // redirect only after receiving a response
        window.location = "database.php";
    }
});
// in database.php
if (isset($_POST["array"])){
    $array = $_POST["array"];
    echo "Data is set";
    print_r($array);
}
gwbalxhn

gwbalxhn2#

echo "Data is set";返回文本 AJAX 请求。您可以在控制台中看到它

success: function(msg)
    {
        console.log(msg);
    }

当你通过window.location重定向到database.php时,$_POST是空的,不显示任何东西,因为window.location只设置URL而不发送参数。尝试使用表单提交来发送php文件中的数据。

相关问题