【问题标题】:How to detect form submit timeout and re-submit?如何检测表单提交超时并重新提交?
【发布时间】:2015-12-02 12:52:49
【问题描述】:

我们使用不可靠的端点提交表单,有时会超时。

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

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

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

注意:是的,更好的解决方案是修复超时。但是我们需要实时取出系统,等不及第三者了。

【问题讨论】:

    标签: javascript forms form-submit


    【解决方案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);
    }
    

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

    【讨论】:

    • 如果收到提交响应,有什么方法可以停止计数器?
    • 如果提交被触发,页面会改变,onbeforeunload也会被触发。否则,如果您的提交是一个 ajax 请求,但您没有对此一言不发,您的代码也没有。这是一个正确的答案,相信我:)
    猜你喜欢
    • 2019-07-20
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2013-09-29
    相关资源
    最近更新 更多