2015-12-02 97 views
0

我们使用不可靠的终端提交表单,偶尔超时。如何检测表单提交超时并重新提交?

window.onload = function(){ 
    document.forms['form-to-third-party-endpoint'].submit() 
} 

什么是检测超时并尝试重新提交表单的最佳方法?放弃之前也许尝试5次。

这是第三方集成 - 表单加载在iframe中并自动提交以获取HTML内容。

注意:是的,更好的解决方案是修复超时。但我们需要系统生存,不能等待第三方。

回答

1

我认为最好的方法是在秒钟内制作一个计数器,当它达到300(5分钟)时再次提交表格。如果用户离开页面,可以用onbeforeunload停止计数器。

像这样的事情

var counter = 0, interval; 

window.onload = function() { 
    interval = setInterval(addCounter, 1000); 
} 

function addCounter() { 
    counter++; 
    if(counter === 300) { 
    counter = 0; 
    document.forms['form-to-third-party-endpoint'].submit() 
    } 
} 

window.onbeforeunload = function() { 
    clearInterval(interval); 
} 

这是一个概念,这个代码是没有测试。

+0

如果收到提交响应,有什么方法可以停止计数器? –

+0

如果提交被触发,页面将改变并且'onbeforeunload'也被触发。否则,如果你的提交是一个Ajax请求,但你并没有说任何关于这个和你的代码。这是一个正确的答案,相信我:) –