我有两部分代码(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时,不会提示警报。
请帮我解决这个问题
答案 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)
,它解决了问题。但我真的无法解释发生了什么。到目前为止,我还不知道问题的根源。欢迎任何解释