Javascript IE9在302之后重新提交表单-可能是由于递归setTimeout()调用
我在IE9中看到了以下内容Javascript IE9在302之后重新提交表单-可能是由于递归setTimeout()调用,javascript,internet-explorer,jquery,settimeout,form-submit,Javascript,Internet Explorer,Jquery,Settimeout,Form Submit,我在IE9中看到了以下内容 Javascript通过.submit()提交表单 服务器成功返回302 IE确实得到了重定向的URL IE通过.submit()重新提交表单 提交发生在一个函数内部,该函数通过setTimeout递归调用自身,我认为这可能是罪魁祸首。但从逻辑上讲,我认为提交不会发生两次。下面是函数: function callback() { "use strict"; var poll_timeout, // setting a var in case we n
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();
}
函数回调(){
“严格使用”;
var poll\u timeout,//设置一个var,以防我们需要终止超时中间计数
poll_counter=0,//启动计数器
max_polls=10;//设置最大计数
函数doPoll(){
如果(poll\u counter
我不熟悉jQuery的$.post
如果这与$.ajax
不同,但我会这样做,以防止我们成功后轮询超时再次运行:
if (success) {
clearTimeout(poll_timeout);
$("form#checkout").off('submit', Store.cancel_submit)
$('form#checkout').submit();
} else {
// do it again
poll_timeout = setTimeout(doPoll,10000);
}