0

jCart をショッピング カートとして使用しています。jCart から変数を取得できます$subtotal

ただし、ショッピング カートで何かを変更しても、変数$subtotalはページがリロードされるまで変更されません。

jQueryを使用$subtotalしてページクリックで更新することは可能.click(function())ですか?

4

3 に答える 3

3

質問にはそもそも欠陥があります。

PHP はサーバー側で実行されます。すべての PHP が完了すると、ブラウザーに表示され、すべての変数がなくなります。それらのいくつかをエコーし​​ている可能性があるため、それらはリテラル形式で「そこに」ありますが、更新する PHP 変数はもうありません。

PHP を使用する前に入力した JavaScript 変数や、PHP によって設定された HTML 値など、何かを更新できます。これはリロードによって行うことができます。または、AJAX ポスト、次に PHP マジック、次に return + assign を使用して行うこともできますが、PHP 変数を置換/リロードすることはありません。

ページをブラウザに送信した後は何もない$subtotalことを理解することは非常に重要です。サーバー側とクライアント側を比較してください。

于 2012-04-26T09:21:48.437 に答える
0

ここでajax投稿の例のJSFiddleを作成しました(ページのリロードなし):http://jsfiddle.net/5RjUt/1/

JQUERY

$("#button").click(function(){ // click function fired

var subtotal = $("#subtotal").val()
var dataString = 'subtotal=' + subtotal;

$.ajax({ // ajax post
    type: "POST",
    url: "YOUR_PHP_PAGE.php", // post data to this URL
    data: dataString,
    cache: false,
    success: function(html){ // this is where you can set a success callback
       $("#subtotal").val("You're new value");
    }
});
return false; // this tells the page not to refresh

)};​
于 2012-04-26T09:11:27.937 に答える
0

あなたが何をしようとしているのかは少し不明です

しかし、ここにいくつかの提案があります。


jQuery を使用してクライアント側のみを更新します。

Web ページに表示されている値を更新する必要がある場合、たとえば、Web ページに表示される値を増減するだけでよい場合subtotalは、サーバー側の処理なしで jQuery を使用してこれを行うことができます。

クライアント側の処理 (Javascript / jQuery):

var subtotal = 0;

// Add value to subtotal and update div displaying subtotal
function addToSubtotal( value ) {
    subtotal += value;
    $('#subtotal').html(subtotal);
}

// When DOM is loaded...
$(document).ready( function(){
    // Bind onclick event to every <a class="buyme">
    $('.product').on('click', 'a.buyme', null, function(e){
        // Buyme link clicked, add <span class="pricetag"> value to subtotal:
        addToSubtotal( parseInt( $(this).siblings('.pricetag').html() ));
    });
});

</p>

クライアント側の処理 (HTML):

<div class="product">
    <a class="buyme" href="#">Add to subtotal</a><br/>
    <span class="pricetag">55</span>€
</div>
<br/>
<span id="subtotal">0</span>​​​​​​​​​​​

または、jQuery.ajax() を使用してサーバー側を更新します。

これを使用して JS 変数も更新できます。特に、サーバーが をチェックして返す場合に必要ですsubtotal。この場合、実際に新しい小計値を返すのはサーバーです。

あなたのPHP変数$subtotalは最初にデータストレージシステムから読み取られたようです$myStore = new onlineStore();..

$subtotalすでに利用可能で、一貫した整数値が含まれていると思います。

AJAX 更新リクエストのコード (サーバー側とクライアント側):

これにより、適切に使用されている場合は PHP 変数が更新され、 jQuery / Javascriptserver sideで使用するためにそれらが取得されます。client side

ただし、この関数はすぐに使用できるわけではなく、完全な実装の開始点としてのみ使用する必要があります。

クライアント側の処理 (javascript/jquery):

function updateSubtotalAtServer( args ) {
    $.ajax({
        type: 'POST',
        url: 'processing.php', // <= Request url
        // Add method=ajax, we use PHP to check that value
        data: $(args).serialize()+"&method=ajax",
        // processing.php returned some data:
        success: function(data){
            // Try decoding data as JSON encoded string:
            try { 
                dataobj = $.parseJSON(data);
            } catch (e) { 
                dataobj = null;
            }
            // Check if JSON return value decoded successfully:
            if (dataobj !== null) {
                // Successfully decoded JSON, log values to console.
                // ...update subtotal <span> to display it for user:
                $('#subtotal').html( dataobj.subtotal );
                console.log( dataobj );
            } else {
                // Result was not JSON string (server error).
            }
        }
    });
}

// Create new object to be used as array:
var arrayobject = new Object;
// Add this value at server side to $subtotal:
arrayobject.addtosubtotal = 55;
// Then send ajax request to server:
updateSubtotalAtServer( yourvariables or array object );

サーバー側の処理 (php):

// Variable that needs updating:
/* $subtotal is already available, ..read above.. */ 

if (isset($_POST['method']) && $_POST['method'] == 'ajax') {
    // Update variables:
    $subtotal += (int)$_POST['addtosubtotal'];
    // Put all data together what is needed at client side:
    $ajaxreply = array( 'subtotal' => $subtotal, 'othervalue' => 'FooBar' );
    // Return it to browser:
    echo json_encode( $ajaxreply );
    // JSON reply will fail if there is any additional output after that.
    exit;
}

より多くの読書/おそらく役立つ回答:
REST、フォーム、データ配列に焦点を当てたjQuery.ajaxに関する別の
回答 jQuety.ajaxに関する別の回答、サーバーからデータを取得する

于 2012-04-26T09:41:41.923 に答える