0

JS:

$('.product').each(function(){
    $parent = $(this);
    $.ajax({
        url: $parent.attr('url'),
        cache: false,
        dataType: 'text',
        success: function(data){       
            $parent.text(data);
        }
    });
});

製品ごとに、価格などのデータをロードしたいと思います。プロセスが終了するのを待たないeachため、関数がこれに適していないことはわかっています。eachasync ajax

私の例では、最後の製品だけがデータで満たされていました。

ドキュメントの読み込み時に各製品のデータを読み込むにはどうすればよいですか? この状況に共通のテクニックはありますか?一度にすべての製品を要求する必要がありますか、それとも個別に要求する必要がありますか?

4

2 に答える 2

1

すべての製品IDを保持するJavaScriptで配列を作成し、その配列の間隔で$.ajaxを呼び出し、最初のajax呼び出しの終了イベントで、配列に製品が残っているかどうかを確認し、再度トリガーします配列が空になるまで ajax を呼び出します。このようにして、ajax 呼び出しを並行して行うことなく、製品をバッファリングできます。

于 2012-10-02T06:43:08.520 に答える
1

理由:コード$parentで がローカルで宣言されていないため、グローバル変数になります。このため、 の最後の反復によって、DOM$('.product').each() { .. }の最後の要素になるように上書きされます。$('.product')

解決策:に変更$parent = $(this);するとvar $parent = $(this);、正常に動作するようになる可能性があります。

于 2012-10-02T06:48:55.847 に答える