是否可以让一个页面发送 ajax 请求并让另一个页面处理响应?
用例是一个长时间运行的任务。用户向服务器提交 ajax 帖子,服务器处理该作业所需的时间,可能是几分钟,然后返回响应,但用户可能已经浏览到另一个页面。
我希望能够拥有相同的 JavaScript 函数来处理所有页面上的响应,以便处理来自原始页面的 ajax 响应。这可能吗 ?如果没有任何建议的解决方案?
我正在使用弹簧框架。
谢谢。
是否可以让一个页面发送 ajax 请求并让另一个页面处理响应?
用例是一个长时间运行的任务。用户向服务器提交 ajax 帖子,服务器处理该作业所需的时间,可能是几分钟,然后返回响应,但用户可能已经浏览到另一个页面。
我希望能够拥有相同的 JavaScript 函数来处理所有页面上的响应,以便处理来自原始页面的 ajax 响应。这可能吗 ?如果没有任何建议的解决方案?
我正在使用弹簧框架。
谢谢。
您可以使用 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/)
我会研究一个可以将更改从服务器推送到客户端的推送框架。如果您使用的是 asp.net,需要考虑的一个是 SignalR。
您还可以使用其他long polling
技术来实现此目的。
此处提供更多信息 什么是长轮询、Websocket、服务器发送事件 (SSE) 和 Comet?
http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
最简单的方法是提交 ajax 请求,然后发送后续的 ajax 请求以每隔一段时间(比如每 2 秒)轮询一次。
一个(很多)更好的方法是使用 websockets - 最值得注意的是,如果您使用的是 nodejs,请查看http://socket.io。使用套接字,您拥有持久连接,您只需为每个用户分配一个 ID。这样你就可以在你的服务器上排队你的工作,当它们准备好时,你可以查找相应的套接字并将答案发回。此外,如果您看到用户已完全断开连接,您还可以取消作业,这样您就不会浪费服务器资源