0

これは、ここSOの素敵な専門家にとっては簡単に思えるかもしれません:)しかし、SOまたはGoogleでこれに関する適切な回答/質問を見つけることができません。助けてください。:)

AJAX/js/jQueryを介してphp変数の現在の値をリアルタイムで表示するにはどうすればよいですか

基本的に私は電子商取引サイトをやろうとしており、セッションを使用してショッピングカートの内容を保存し、現在バスケットに入っている内容の数をカウントするエコーステートメントで表示していますが、特定の製品に追加しようとした場合カートでは、ページが更新されるまでカートの値は追加されたアイテムをエコーし​​ないため、ページを更新せずにアイテムが追加されたときにセッションの更新された値を表示するには、AJAX のようなものが必要です。

どうもありがとう。

サンプルとしてのカートのコード スニペットを次に示します。

// Assign shopping cart ($_SESSION['cart']) into variable
$basket = count($_SESSION['cart']);

そして表示するために:

<!-- Display contents of the shopping cart -->
<ul id="basket" class="clearfix">
   <li class="top">
      <a href="checkout.php" class="top_link"> 
         <span>Items: <? echo $basket ?></span>
      </a> 
   </li>
</ul>

どうもありがとう.. これを実現する方法 (js または jQuery) のサンプル コードを提供してください。このタイプのシナリオに対処するためのベスト プラクティスにも役立ちます。

4

1 に答える 1

0

最初の解決策 (あなたのリクエストに基づく - BAD IDEA)

get-count-items.php
<?php
    session_start();
    die(count($_SESSION['cart']));
?>

Javascript
<script>
    setInterval(function(){
        $.post('get-count-items.php', {}, function (total_items){
            $('#total-items').html(total_items);
        });
    }, '1000');
</script>

HTML
<ul id="basket" class="clearfix">
    <li class="top">
        <a href="checkout.php" class="top_link"> 
            <span>Items: <span id="total-items"><? echo $basket ?></span></span>
        </a> 
    </li>
</ul>

この JavaScript は、1 秒ごとにサーバーにリクエストを送信します。

2 番目の解決策 (「カートに追加」ボタンのイベント)

add-to-cart.php
<?php
    session_start();
            // code for add to cart...
    die(count($_SESSION['cart']));
?>


Javascript
<script>
    $('.add-to-cart').click(function(){
        $.post('add-to-cart.php', {}, function (total_items){
            $('#total-items').html(items);
        });
        return false;
    });
</script>

HTML
<ul id="basket" class="clearfix">
    <li class="top">
        <a href="checkout.php" class="top_link"> 
            <span>Items: <span id="total-items"><? echo $basket ?></span></span>
        </a> 
    </li>
</ul>

<a href="" class="add-to-cart">Add to cart</>
于 2013-06-12T21:12:35.720 に答える