2

明らかな何かが欠けている可能性がありますが、jQueryと同時にではなく、AJAX投稿を連続して実行することができないようです。

ad_numbers数値IDの配列です。

$(ad_numbers).each(function() {
  ad_number = $.trim(this);

  if(!ad_number) { return true; }

  $.post('/fetch.php', { ad_number: ad_number }, function(data, textStatus) {
    $('#log').prepend('<p>' + data + '</p>');
  });
});

fetch.php、私はそれを持っていたsleep(2)ので、それが正しく機能することを確認できます。配列内の次の広告番号に進む前に最初のPOSTが完了するのを待つ代わりに、それらすべてを同時に実行しているように見えます。

$.post()完了する前に戻ってくると思いますか?これを回避するための最良の方法は何ですか?

4

2 に答える 2

7

async: falseオプションに追加してみてください。

$(ad_numbers).each(function() {
    ad_number = $.trim(this);

    if(!ad_number) { return true; }

    $.ajax({
        type: 'POST',
        url: '/fetch.php',
        data: {ad_number: ad_number},
        async: false,
        success: function(data, textStatus) {
            $('#log').prepend('<p>' + data + '</p>');
        }
    });
});
于 2009-02-16T18:55:43.743 に答える
2

AJAXは非同期です。fetch.phpを呼び出している可能性がありますが、JavaScriptは非同期パターンで動作し、ユーザーが終了sleepするのを待ちません。sleep

于 2009-02-16T18:56:31.043 に答える