我有一个处理许多其他文件的文件,可能需要30分钟来处理。我对前端的文件做了一个AJAX请求。该文件输出到另一个关于完成百分比的临时文件。完成后,它会将成功消息输出为自己的XML输出(而不是tmp文件)。
我遇到的问题是,当处理时间很短时...说最多3分钟,AJAX请求(通过jQuery制作)保持活跃状态。但是当处理需要更长的时间(超过4分钟)时会发生超时。并且AJAX连接被切断了。如何防止它并使其保持活着直到浏览器关闭?
答案 0 :(得分:1)
你将无法做到这一点。除非它是一个彗星服务器,否则可以保持服务器端的连接活动,并且当数据有任何更新时,它会推出内容。
在你的情况下,我能想到的唯一方法是这样做:
function ajax_call () {
$.ajax({
url : 'get_file_processing_output.html',
success : function (response) {
check your response, if file processing is not finished, then call ajax_call() again
if it is finished, then just do whatever you need.
},
timeout : function () {
time out then directly call ajax_call() again, maybe with a time interval would be better
}
})
}
我在ajax上面成功回调,因为我觉得你应该回应服务器端的某些事情,告诉客户端处理尚未完成。