PHP读取JSON POST请求并将其发送回

PHP读取JSON POST请求并将其发送回,php,jquery,json,post,Php,Jquery,Json,Post,我尝试用PHP读取JSON POST请求,但我得到以下错误 请求失败:parsererror 这是我的密码 <script type="text/javascript" charset="utf-8" src="resources/js/model/Product.js"></script> <script> function getdetails(){ var p = new Product(15,11.5,"Pizza T

我尝试用PHP读取JSON POST请求,但我得到以下错误

请求失败:parsererror

这是我的密码

    <script type="text/javascript" charset="utf-8" src="resources/js/model/Product.js"></script>
<script>
    function getdetails(){

        var p = new Product(15,11.5,"Pizza Test","P");
        var z = new Product(68,1.5,"Zutate Test","Z");

        p.addOneProduct(z);

        var request = $.ajax({
            type: "POST",
            url: "yb_test_post.php",
            dataType: "json",
            data: JSON.stringify(p)
        });

        request.done(function(msg) {
            $("#msg").html( " Post parameter are: <br/>"+msg );
        });

        request.fail(function(jqXHR, textStatus) {
            alert( "Request failed: " + textStatus );
        });
    }
</script>

您正在执行
data:JSON.stringify(p)
。这将发送一个JSON字符串作为post正文。你不会想要这个的。PHP不会自动为您解析此内容。如果希望向PHP发送一个查询字符串,这将使PHP自动将其解析到
$\u POST
数组中

丢失
JSON.stringify
,然后试试这个:
data:p

另外,
数据类型:“json”
响应的
内容类型,而不是请求。您的PHP正在发回HTML,因此您需要:
数据类型:“HTML”


我试过了,但现在我在web控制台TypeError中收到以下错误消息:oneProduct是未定义的self.totalPrice=self.totalPrice+oneProduct.price@用户1167253:我很害怕。序列化时,jQuery将调用函数以获取其值。要解决此问题,请添加
if(!oneProduct){return';}
作为
addOneProduct
中的第一行。Thx,这是有效的。但是发送格式不是JSON。如何发送到PHP JSON?@user1167253:为什么要将其作为JSON发送?最好将其作为查询字符串发送。如果这样做,
$\u POST
将自动填充。如果你想要JSON,你必须手动解析它(如果你真的想要的话,我可以告诉你怎么做)。对我来说,最重要的是我可以轻松地将服务器上获取的数据转换为对象。在PHP中有解决方案吗?
    <table>
<?php


    foreach ($_POST as $key => $value) {
        echo "<tr>";
        echo "<td>";
        echo $key;
        echo "</td>";
        echo "<td>";
        echo $value;
        echo "</td>";
        echo "</tr>";
    }


?>
</table>
function Product(id, price, name, type){
    this.id = id;
    this.price = +price;
    this.totalPrice = +price;
    this.name = name;
    this.type = type;
    this.products = [];
    var self = this;

    this.addOneProduct = function(oneProduct){
        self.products.push(oneProduct);
        self.totalPrice= self.totalPrice+oneProduct.price;
    };
}
var request = $.ajax({
    type: "POST",
    url: "yb_test_post.php",
    dataType: "html",
    data: p
});