AJAX - 从长服务器调用中获取数据

时间:2010-11-01 15:29:44

标签: jquery ajax

在长服务器进程中,服务器可以逐步写入响应, 像:

  

复制完成的100个文件,

10秒后

  

归档文件已完成,

30秒后

  

删除已完成的临时文件,

和....

是否可以在ajax完成之前获取此流并将其显示给用户?

3 个答案:

答案 0 :(得分:3)

听起来像是在寻找long polling。您还可以阅读有关Comet pattern的内容。几分钟前我也只是answered a question触及了类似的问题。

答案 1 :(得分:0)

您可以使用两个异步回调。一个用于执行处理(删除文件或其他),以保持会话变量的值更新(删除的文件数)。另一个异步回调可以在设置的超时时间内检查此会话变量的值,然后相应地更新GUI,

答案 2 :(得分:0)

即使您将超时设置为足以捕获所有超时,因此将其作为一个调用获取可能是无用的,因为使用在完成之前不会得到任何反馈。

进行多项状态调查是唯一可行的方法。

但是根据服务器的运行方式,可能会有一些想到的怪癖。

例如,IIS每个会话只使用一个线程,因此来自同一客户端的两个同时调用将相互处理。

如果你发布了一些需要时间处理的ajax或iframe,比如文件上传,那么该调用将阻止会话,任何状态页面都需要无会话才能直接响应。