Javascript 启动ajax服务器脚本并轮询完整性

Javascript 启动ajax服务器脚本并轮询完整性,javascript,ajax,webmethod,Javascript,Ajax,Webmethod,我有一个AJAX请求,需要很长时间才能完成执行。它通常会超时并继续在服务器上运行。所以我在想,如果有什么方法可以启动它,偶尔对相同的完整性请求进行投票,那将是理想的 所以我的问题是,您能否运行一个服务器脚本,让它运行,并偶尔轮询以查看其是否已完成?我正在使用web方法在服务器上运行,如果这有帮助/重要的话 我不想将数据存储在数据库中,所以我不能只轮询数据库,所以我可以轮询脚本本身 然而,我的退路是创建一个临时表,这样我就可以从中调用它来查看进度。或者有更好的方法吗?首先,如果不希望Ajax请求超

我有一个AJAX请求,需要很长时间才能完成执行。它通常会超时并继续在服务器上运行。所以我在想,如果有什么方法可以启动它,偶尔对相同的完整性请求进行投票,那将是理想的

所以我的问题是,您能否运行一个服务器脚本,让它运行,并偶尔轮询以查看其是否已完成?我正在使用web方法在服务器上运行,如果这有帮助/重要的话

我不想将数据存储在数据库中,所以我不能只轮询数据库,所以我可以轮询脚本本身


然而,我的退路是创建一个临时表,这样我就可以从中调用它来查看进度。或者有更好的方法吗?

首先,如果不希望Ajax请求超时,可以使用“timeout”属性。 用于Ajax调用的XMLHttpRequest对象具有“timeout”属性。查看位于的文档。如果您使用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-收到响应\ U头,3-加载(正在接收响应),4-完成。更多关于。
我认为,跟踪除此之外的任何内容都有助于开发、维护和监控代码

您不能简单地将其称为async并让回调函数在完成时通知您吗?@YuriyGalanter问题取决于任务的大小,它可能超时。如果您使用脚本管理器调用ASP.NET web服务,您可以提供第二个回调函数,该函数在出现错误(包括超时)时将被调用。此回调函数是否将调用仍在服务器上运行的同一请求?谢谢,这暂时解决了我的问题。正如你所提到的,我必须找到一种更干净的方法来引入所有这些数据。我不太熟悉jquery,所以不知道timeout属性。谢谢你的链接。很高兴知道。只是一个小的修正,超时是以毫秒为单位的,所以“100000”将是100秒而不是1分钟。我已经更新了我的答案。