根据json数据显示警报

时间:2016-07-13 12:23:03

标签: javascript php jquery json

我有两部分代码(php和javascript)。 在PHP文件中,我使用函数json_encode()创建一个JSON data,它将被发送到Javascript文件。

PHP文件

<?php
if(isset($_GET["remove_code"]) && isset($_SESSION["products"]))
{
    $product_code   = filter_var($_GET["remove_code"], FILTER_SANITIZE_STRING); //get the product code to remove

    if(isset($_SESSION["products"][$product_code])) {
        unset($_SESSION["products"][$product_code]);
    }

    $total_items = count($_SESSION["products"]);

    if($total_items == 0){
        unset($_SESSION["products"]);
    }else{
        //Calculate total of items in the cart
        $total = 0;
        foreach($_SESSION["products"] as $product){ //loop though items and prepare html content

            $product_price = $product["price"];
            $product_quantity = $product["quantity"];

            $subtotal = $product_price * $product_quantity;

            $total += $subtotal;
        }
    }

    die(json_encode(array('items'=>$total_items, 'total'=>$total)));
}
?>

Javascript文件

<script>
    $(document).ready(function(){
        $(".contentwrapper .content").on('click', 'a.removebutton', function() {
            var pcode = $(this).attr("data-code"); //get product code

            $.getJSON( "phpfile.php", {"remove_code":pcode}, function(data) {

                alert(data.items);// the total number of item
            });
    });
</script>

只要查询$.getJSON( "phpfile.php", {"remove_code":pcode}...成功,就会显示一条警告,显示data.items。我面临的问题是,当data.items大于或等于1时,提示警报,但当data.items等于0时,不会提示警报。

请帮我解决这个问题

3 个答案:

答案 0 :(得分:1)

看起来像PHP错误。 $ total变量仅在'else'条件内声明,因此当($total_items == 0) $ total未定义时。但是当你调用die(json_encode(array('items'=>$total_items, 'total'=>$total)));时,服务器没有机会抱怨(可能没有返回数据,因此没有警报)。如果您尝试在条件之前声明$total = 0,它也应该解决问题,而不必提前死亡。

答案 1 :(得分:0)

一种可能性是实际数据变量未定义/ null e.t.c.,例如,请参见此示例,未显示第二个警报。而是在浏览器控制台上显示错误。

var data = {items:0};
alert(data.items);
data = null;
alert(data.items);

答案 2 :(得分:0)

在条件die(json_encode(array('items'=>$total_items)));的末尾添加if($total_items == 0),它解决了问题。但我真的无法解释发生了什么。到目前为止,我还不知道问题的根源。欢迎任何解释