我在服务器端有一个长时间运行的功能,它通过AJAX调用。 但在用户发送AJAX请求后,他们可以转移到其他页面。我不想展示一个AJAX微调器来阻止用户。
即使用户移动到其他页面,如何显示AJAX通话结果? 我应该考虑使用SignalR吗?
感谢。
更新: 我正在使用ASP.Net MVC,jQuery,AngularJs,但我的应用程序不是单页面应用程序。
答案 0 :(得分:0)
只要您离开页面,您的JS进程就会被终止,您就无法在另一个页面中显示AJAX结果。
一个解决方案是在复杂函数运行完毕后将结果推送到客户端(使用Web套接字或类似的东西),或者使用AJAX处理页面重新加载以避免实际的页面刷新。
答案 1 :(得分:0)
如果您正在寻找要存储的结果并将其拉到其他地方供以后使用,您可以启动HTTP或Websocket请求以启动某种类型的任务队列,然后您可以使用AJAX或Websockets来检查作业/任务的状态/结果。
您要做的是在本地存储结果,而不是这种类型的工作方式。如果您是发起ajax请求,则意味着您正在使用某种API,这意味着API端点应该是密钥持有者,而不是用户的浏览器。
您可以发起一个请求,然后跟随用户跟随Facebook的工作方式。您发送消息,转到一个全新的页面,消息框仍然出现,因为它已经加载了启动对服务器的调用以获取信息的javascript。网上的待办事项列表示例就是一个很好的例子。您可以在每个页面上放置一个待办事项列表,并将其绑定到SignalR。但是,没有在浏览器中存储信息,只是丢失了对原始请求结果的ajax请求。或者在SignlR websocket连接的情况下监视服务器端对象。