我有一个简单的函数来处理行数据的提交(每个循环一个提交)。我不会详细介绍该函数的主要用途,但这里有一个简短的总结:我有很多数据循环遍历,并且在每个循环中我调用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+ 之后提交)。我不确定这是否是因为互联网连接速度慢,但我在 firebug 上使用控制台时注意到的是,当控制台中的提交停止时,它仍然显示 Ajax 正在尝试 su submit 但从未完成。并且没有显示 javascript 错误。
如果 Ajax 需要很长时间才能完成提交(假设它被卡住了将近 5 分钟)并使用.abort()
重试,有没有一种方法可以解决?
谢谢。