首页 文章

发送json到php(jquery)[复制]

提问于
浏览
0

这个问题在这里已有答案:

我试图将一个由html表的 json.stringify 进程获得的Json传递给php文件,以将其插入到数据库中 . 首先,想要检查下面的代码是否正确:在执行'myjson'警报时,我得到了正确的json输出:

var myjson=  JSON.stringify(mydata);
alert(myjson);

[{},{"product[]":"john","qty[]":"288","price[]":"199","total[]":"57312"},{"product[]":"sylvia","qty[]":"12","price[]":"13","total[]":"156"},{"product[]":"juan","qty[]":"11","price[]":"9","total[]":"99"},{"total_amount":"57567.00"}]

然后我有这个ajax将它发送到PHP(test.php):

$.ajax({
url: "test.php",
type: "POST",
data: myjson,
dataType: "JSON",
success: function (data) {
    alert(data);

}

});

我的php文件检查输出是否正常:

$obj = json_decode($_POST["mydata"]);

echo $obj->var;

但是,一旦php被处理,我的警报中没有任何东西?

怎么了?

1 回答

  • 0

    首先,您需要使用名称发布数据,更具体地说,名称为“mydata” .

    目前PHP正在寻找一个名为mydata($ _POST ["mydata"])的帖子,该帖子不可用并抛出以下注意事项 Undefined index: mydata

    为此,您可以更改要发送的数据:

    data: myjson
    

    data: {"mydata": myjson}
    

    其次,发送到后端的数据是一个对象数组

    Array
    (
        [0] => stdClass Object
            (
            )
    
        [1] => stdClass Object
            (
                [product[]] => john
                [qty[]] => 288
                [price[]] => 199
                [total[]] => 57312
            )
    
        [2] => stdClass Object
            (
                [product[]] => sylvia
                [qty[]] => 12
                [price[]] => 13
                [total[]] => 156
            )
    
        [3] => stdClass Object
            (
                [product[]] => juan
                [qty[]] => 11
                [price[]] => 9
                [total[]] => 99
            )
    
        [4] => stdClass Object
            (
                [total_amount] => 57567.00
            )
    
    )
    

    您需要通过索引访问它们或遍历数组 .

    按索引访问它们: $obj[0]->var$obj[1]->var

    最后但并非最不重要的是,属性包含方括号 {"product[]":"john","qty[]":"288","price[]":"199","total[]":"57312"} ,不推荐使用,但仍可使用 . 访问属性应该像: $obj[1]->{'property[]'}

    JavaScript的:

    <script type="text/javascript">
        function  sendAjax(){
            var mydata = [{},    {"product[]":"john","qty[]":"288","price[]":"199","total[]":"57312"},    {"product[]":"sylvia","qty[]":"12","price[]":"13","total[]":"156"},{"product[]":"juan","qty[]":"11","price[]":"9","total[]":"99"},{"total_amount":"57567.00"}]
            var myjson =  JSON.stringify(mydata);
    
            $.ajax({
                url: "test.php",
                type: "POST",
                data: {"mydata": myjson},
                dataType: "JSON",
                success: function (data) {
                    alert(data);
                }
            });
        }
    </script>
    

    PHP:

    <?php
        $obj = json_decode($_POST["mydata"]);
        echo $obj[1]->{'product[]'};
    ?>
    

    Update:

    AJAX期待JSON响应,否则它将失败 . 在后端,您需要更改对JSON的响应 .

    <?php
        $obj = json_decode($_POST["mydata"]);
        header('Content-Type: application/json');
    
        echo json_encode($obj[1]->{'product[]'});
    ?>
    

相关问题