0

IE9で次のように表示されます

  1. Javascript は .submit() 経由でフォームを送信します
  2. サーバーは成功時に 302 を返します
  3. IE はリダイレクトされた URL で GET を実行します
  4. IE は .submit() 経由でフォームを再送信します

送信は、setTimeout を介して再帰的に自分自身を呼び出す関数内で発生します。これが原因である可能性があります。しかし、論理的には、送信が 2 回発生する可能性はありません。関数は次のとおりです。

function callback() {
    "use strict";

    var poll_timeout, // setting a var in case we need to kill the timeout mid count
        poll_counter = 0, // start a counter
        max_polls = 10; // set a max count

    function doPoll() {
        if (poll_counter < max_polls) { // make sure we're not above the count
            poll_counter++; // increment the counter
            $.post("/someUrl", function (success) {
                // ajax it
                if (success) {
                    $("form#checkout").off('submit', Store.cancel_submit)
                    $('form#checkout').submit();
                } else {
                    // do it again
                    poll_timeout = setTimeout(doPoll,10000);

                }
            });
        }
    }
    doPoll();
}
4

1 に答える 1

0

$.postそれがと同じでない場合、私は jQuery に慣れていません$.ajaxが、成功したときに poll_timeout が再び実行されるのを防ぐためにこれを行います。

if (success) {
    clearTimeout(poll_timeout);
    $("form#checkout").off('submit', Store.cancel_submit)
    $('form#checkout').submit();
} else {
    // do it again
    poll_timeout = setTimeout(doPoll,10000);
}
于 2013-08-29T19:09:32.433 に答える