Ajax JSON请求似乎收到了空白响应

时间:2013-12-27 06:30:40

标签: javascript php jquery ajax json

我正在尝试通过AJAX调用通过PHP / mySQL更新我的自定义购物车。我试图以JSON格式接收响应,但PHP脚本似乎返回一个空数组。

以下是脚本:

AJAX部分

//update cart
        url_cart="http://localhost/all/anm2/cart_queries.php?id=" + id + "&qty="  + qty + "&ses=" + ses;
        $('#refresh_cart').css('display','block');

        $.ajax({ 
            type: 'GET', 
            url: url_cart, 
            dataType: 'json',
            success: function (json) { 
                $("#cart_items").empty();
                $.each(json.cart_items, function(i, dat) {
                    $("#cart_items").append('<li>' + dat.pd_name + ' ' + dat.cart_qty + ' ' + dat.pd_general_price + '</li>');
                });
                $('#refresh_cart').css('display','none');
            }
        });

PHP部分

<?php

    $arr = array();
    $id=(isset($_GET['id']) && $_GET['id'] != '') ? $_GET['id'] : '';
    $ses=(isset($_GET['ses']) && $_GET['ses'] != '') ? $_GET['ses'] : '';
    $qty=(isset($_GET['qty']) && $_GET['qty'] != '') ? $_GET['qty'] : '';

    mysql_query("INSERT INTO tbl_session_cart VALUES (" . $ses. ", " . $id . ", " . $qty .")");

    $rs = mysql_query("SELECT pd_name, pd_general_price, cart_qty, cat_id
                        FROM tbl_session_cart sc
                        LEFT JOIN tbl_product p ON sc.pd_id = p.pd_id
                        WHERE ses_id LIKE '" . $ses. "'");

    while($obj = mysql_fetch_object($rs)) {
        $arr[] = $obj;
    }
    echo '{"cart_items":'.json_encode($arr).'}';        

?>

我已经彻底测试了脚本,并得出结论,PHP脚本可以自行运行,并且可以进行必要的数据库更新,并且AJAX脚本本身在接收响应时运行良好。

但是,当通过AJAX脚本调用时,PHP脚本产生的响应是一个空数组,并且没有完成数据库更新。是否有一些我在AJAX脚本中遗漏的参数?或者它完全是另一回事?

作为参考,当我直接调用它时,我将包括PHP脚本完成的回显。我检查了这个及其有效的JSON响应:

{
    "cart_items": [
        {
            "pd_name": "Original Vanilla",
            "pd_general_price": "100.00",
            "cart_qty": "2",
            "cat_id": "1"
        },
        {
            "pd_name": "Original Vanilla",
            "pd_general_price": "100.00",
            "cart_qty": "2",
            "cat_id": "1"
        },
        {
            "pd_name": "Original Vanilla",
            "pd_general_price": "100.00",
            "cart_qty": "2",
            "cat_id": "1"
        }
    ]
}

2 个答案:

答案 0 :(得分:0)

尝试

 $array = array("cart_items"=>$arr);
 echo json_encode($array);    

而不是

echo '{"cart_items":'.json_encode($arr).'}';    

答案 1 :(得分:0)

我想你错过了解码json:

while($obj = mysql_fetch_object($rs)) {
    $arr[] = $obj;
}
$json = '{"cart_items":'.json_encode($arr).'}'; 

echo json_decode($json); //<---may be this has to be done