1

次のようなコードがあります。

var offset = 1;
$.ajax({
    url: /www/loadmoredata,
    type: 'POST',
    data: {
        limit: 1,
        offset: offset
    },
    beforeSend: function (xhr, ajaxOptions, thrownError) {
        offset++;
    }
}); 

AJAX が処理される前に実行される beforeSend をインクリメントするため、ajax を介して渡されるオフセットは 2 であると予想されます。ただし、 beforeSend は、関数呼び出しにデータとして追加された後、オフセット変数をインクリメントするようです。

私の質問は: 私は何か間違ったことをしているのですか、それとも beforeSend メソッドの使用目的ではないのでしょうか? そうでない場合、私が意図したことを行う正しい方法は何でしょうか?

4

1 に答える 1

3

修正、 beforeSend が呼び出されるまでに、リクエストはすでに構築されており、変更しようとしているデータオブジェクトはリクエストに入れられています。beforeSend http://api.jquery.com/jQuery.ajax/のドキュメントは次のとおりです。ajaxOptions パラメータは、現在の ajax リクエストのオプションではありません。したがって、リクエストに渡すデータを変更できます。

あなたが何を達成しようとしているのか、より高いレベルのアイデアを私たちに教えていただければ、私たちが助けることができるでしょうか?

-- 元の提案 --

オフセットはまだ範囲内ですが、あなたの期待は正しくありません。これを試してください:

var offset = 1;
$.ajax({
    url: /www/loadmoredata,
    type: 'POST',
    data: {
        limit: 1,
        offset: offset
    },
    beforeSend: function (xhr, ajaxOptions, thrownError) {
        ajaxOptions.data.offset += ajaxOptions.data.offset;
    }
});
于 2013-10-26T19:29:38.150 に答える