0

我在 IE9 中看到以下内容

  1. Javascript 通过 .submit() 提交表单
  2. 服务器成功返回 302
  3. IE 在重定向的 URL 上执行 GET
  4. IE 通过 .submit() 重新提交表单

提交发生在一个通过 setTimeout 递归调用自身的函数中,我认为这可能是罪魁祸首。但从逻辑上讲,我不认为提交可能会发生两次。这是功能:

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 不同,我不熟悉 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 回答