我有一个AJAX请求需要很长时间才能完成执行。这么长时间,它通常超时,只是继续在服务器上运行。所以我在想,如果有一些方法可以启动它并偶尔轮询相同的完整性请求,那将是理想的。
所以我的问题是你可以运行一个服务器脚本,让它运行,并偶尔轮询以查看它是否已完成?我正在使用Web方法在服务器上运行,如果这有帮助/重要。
我不想将数据存储在数据库中,所以我不能轮询数据库,所以我可以轮询脚本本身。
然而,我的后备是创建一个临时表,所以我可以从中调用以查看进度。或者有更好的方法吗?
答案 0 :(得分:0)
首先,如果您不希望Ajax请求超时,可以使用'timeout'属性。 用于Ajax调用的XMLHttpRequest对象具有“超时”属性。查看http://www.w3.org/TR/XMLHttpRequest/#the-timeout-attribute上的文档。如果您使用jquery进行Ajax调用,则可以执行类似
的操作$.ajax({
url: 'your url',
timeout: 100000 //this sets the timeout as 100 sec
……//your other attributes for the call
});
如果您对跟踪请求进度感兴趣,除非您想跟踪完整性(完整),错误,成功或特定状态代码,否则可能会有点困难。 jquery为此提供了不同的(完整,错误,成功和状态代码)属性。如果您编写本机ajax调用(无查询),onreadystatechange事件可以跟踪以下内容。 0 - 未发送,1-已打开,2 - 已接收到Response_Headers,3 - 正在加载(正在接收响应),4 - 完成。更多http://www.w3.org/TR/XMLHttpRequest/#event-handlers。 跟踪除此之外的任何内容都是为了您在我的代码中开发,维护和监控。