2016-07-13 11 views
1

私はコード(phpとjavascript)の2部分を持っています。 PHPファイルでは、json_encode()という関数を使用して、JSON dataを作成し、これをJavascriptファイルに送信します。jsonデータに基づいて警告を表示します

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の場合は警告が表示されません。

は親切に私が

+2

console.log()行を追加して、successメソッドに入るかどうかを確認しましたか?エラーハンドラをAjax呼び出しに追加して、それがトリガされているかどうかを確認してください。 – epascarello

+0

ajax呼び出しが成功しました。 'data.items> = 1'のときに警告が表示されますが、' data.items = 0'のときに問題が発生します。 – Prince

+0

成功メソッドに入ると確信していますか? – epascarello

答えて

1

PHPエラーのようです。 $ total変数は 'else'条件の中でのみ宣言されるので、($total_items == 0) $ totalは未定義です。しかし、die(json_encode(array('items'=>$total_items, 'total'=>$total)));と呼ばれているように、サーバーには不平を言う機会がありません。条件の前に$total = 0を宣言しようとすると、早期に死ぬことなく問題が解決されるはずです。

+0

ありがとうございました。次回にもう一度あなたに会いたいと願っています。 – Prince

0

一つの可能​​性は、実際にデータ変数が定義されていない/ nullにe.t.c.は、例えばこれを見ることで、この問題を解決するため、第二の警告は表示されません。代わりにエラーがブラウザコンソールに表示されます。

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

0

条件if($total_items == 0)の終わりにdie(json_encode(array('items'=>$total_items)));を追加し、それは問題を解決します。しかし、私は実際に何が起こっているのか説明することはできません。今まで私は問題の起源を本当に知っていません。説明は歓迎されます

関連する問題