【问题标题】:Ajax JSON.stringify, POST variable is emptyAjax JSON.stringify,POST 变量为空
【发布时间】:2015-02-16 14:06:48
【问题描述】:

我正在尝试序列化 HTML 表单并通过带有 POST 操作的 Jquery 发送它,目前我有以下 Jquery:

var dataToSend = {
                    'name': 'person',
                    'description': 'very nice person'
                }

                $.ajax({
                    type: "POST",
                    url: "http://localhost/rest/PersonPOST.php",
                    data: JSON.stringify(dataToSend)
                    //contentType: 'application/json',
                    //dataType: 'json'
                });

在服务器端,我有一个 PHP 脚本,它打印它接收到的内容,到目前为止,我设法接收到一个没有 $_POST 变量的请求。 如果我 decomment contentType 和 dataType 没有任何改变......

<?php

error_log("START POST");
foreach ($_POST as $key => $entry)
{
    if (is_array($entry))
    {
        foreach ($entry as $value)
        {
            error_log($key . ": " . $value . "<br>");
        }
    }
    else
    {
        error_log($key . ": " . $entry . "<br>");
    }
}

?>

上面的ajax请求有什么问题?

编辑:服务器端的 file_get_contents('php://input') 正确打印应该在 $_POST 变量中的内容。谁能回答如何通常将其放入 $_POST 变量中,或者为什么不可能?谢谢

【问题讨论】:

  • 确保在浏览器的控制台中观看请求/响应,它会为您提供很多关于正在发生的事情的信息。
  • 为什么要对数据进行字符串化?把它当作一个对象。现在,PHP 接收的是字符串,而不是对象。所以它不能将其作为键/值进行迭代。
  • file_get_contents('php://input') 可以正常工作,但恕我直言。查看我的编辑

标签: javascript php jquery ajax json


【解决方案1】:

您不需要stringify,因为您已经手动创建了一个 JSON 对象。试试这样:

var dataToSend = {
    'name': 'person',
    'description': 'very nice person'
};
$.ajax({
    type: "POST",
    url: "http://localhost/rest/PersonPOST.php",
    data: dataToSend
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2011-10-30
    相关资源
    最近更新 更多