2012-05-31 63 views
0

我有一个简单的函数来处理行数据的提交(每个循环提交一次)。 我不会详细介绍该函数主要用于什么,但这里是一个简短的总结: 我还循环了很多数据,并且在每一个我称之为upload()函数的函数中都有一个ajax函数。 Ajax将数据提交为帖子,然后在成功调用insert()函数时继续执行循环,并再次调用upload(),直到处理完所有数据。

upload: function(data){ 
    var obj = this; 
    if(data.post_code && data.post_code.length > 0){ 
     if(ajax_insert){ 
      ajax_insert.abort(); 
     } 

     try{ 
      ajax_insert = $.ajax({ 
       type : 'POST', 
       url  : '/submission/my-function?ajax', 
       data : $.param(data), 
       success : function(response) { 
        obj.insert(); 
       }, 
       error: function(msg){ 
        setInterval(function(){ 
         obj.insert(); 
        }, 2000); 
       } 
      }); 
     }catch(err){ 
      ajax_insert.abort(); 
      obj.insert(); 
     } 
    }else{ 
     this.insert(); 
    } 
} 

,一些客户的经验是提交一段时间后停止的问题(一些60后,提出一些100+之后)。我不确定这是因为互联网连接速度缓慢,但我注意到在萤火虫上使用控制台时,当控制台提交停止时,它仍显示Ajax正在尝试su提交,但从未完成。并没有显示javascript错误。

如果Ajax需要很长时间才能完成提交(可以说它已停留近5分钟)并使用.abort()再试一次,有没有办法提取?

谢谢。

回答

1

你可以使用..

timeout: 10000, //time in milliseconds. 

这至少会赶上停滞的脚本。

+0

谢谢我会试试看。 – Alex

+0

嗨Maxum,我试着超时,出于某种原因客户开始遇到更多的问题,因为这一点。 ajax提交被卡住的问题得到了解决,但由于某种原因,它几乎在每次提交之后都开始提交,并且直到浏览器崩溃后才升级。我把另一个修复程序(一个重试按钮),将强制当前ajax提交停止并再次尝试。谢谢您的帮助。 – Alex

+0

如果不会有任何更多的建议,我会接受你的答案作为正确的答案,因为它确实解决了ajax提交被卡住的问题,但之后发生的问题与我请求的问题无关。 – Alex