PHP未接收到由jQuery AJAX发送的JSON数据

3

我有一个让我困惑的问题。我有一个ajax函数,发送一个JSON对象,我看到JSON被解析在F12谷歌浏览器头中,并且我收到了成功的提示。

$(document).ready(function() {
        var test = {'bob':'foo','paul':'dog'};
        $.ajax({
            url: "test.php",
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(test),
            success: function(data) {
                alert("Bien: " + data);
            },
            failure: function(errMsg) {
                alert("Mal: " + errMsg);
            }
        });
});

但是在我的PHP页面中,我看不到任何POST或其他内容。我可以看到我的post已经被接收,但是没有其他东西:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   echo "post"; //Result 'post'
}

foreach( $_POST as $stuff ) {
    echo $stuff; //Nothing at all
}

print_r(json_decode($_POST["data"], true)); // Undefined index: data

在同一段代码中,我使用

$.post( "test.php", { data: { name: "John", time: "2pm" } } );

如果程序可以运行,那么问题肯定与代码相关,但我无法真正看出是什么。

谢谢你的帮助!


可能是在PHP中处理JSON请求的重复问题。 - Quentin
1
在您的ajax调用中尝试不使用JSON.stringify。 - Needpoule
当您检查 $_POST['bob'] 时会发生什么?此外,您不应该需要使用 json.stringify。 - Jonast92
1个回答

5

试试这个替代方案

$results = json_decode(file_get_contents('php://input'));
echo $results->bob //Result foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接