是否可以让一个页面发送ajax请求并让另一个页面处理响应?
用例是长时间运行的任务。用户向服务器提交ajax帖子,服务器处理作业所花费的时间,可能是几分钟,然后返回响应,但用户可能已浏览到另一页面。
我希望能够使用相同的JavaScript函数来处理所有页面上的响应,以便处理来自原始页面的ajax响应。这可能吗 ?如果没有任何建议的解决方案?
我正在使用spring框架。
感谢。
答案 0 :(得分:3)
您可以使用Spring MVC的异步功能:(http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/new-in-3.2.html)
示例(http://blog.inflinx.com/2012/09/09/spring-async-and-future-report-generation-example/)
答案 1 :(得分:1)
我会研究一个推送框架,它可以将更改从服务器推送到客户端。 如果您使用的是asp.net,那么需要考虑的是SignalR。
您还可以使用其他long polling
技术。
这里有更多信息 What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet?
http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
答案 2 :(得分:0)
这样做的简单方法是提交ajax请求,然后发送后续ajax请求以一定间隔(例如每2秒)轮询一次。
更好的方法是使用websockets - 最值得注意的是,如果你使用nodejs看看http://socket.io。使用套接字,您可以拥有持久连接,只需为每个用户分配一个ID即可。这样你就可以在你的服务器上排队了你的工作,当你准备就绪时,你可以查看相应的套接字并发回答案。此外,使用此功能,您还可以取消作业,如果您看到用户已完全断开连接,那么您不会浪费服务器资源