Javascript 当用户移动到其他页面时,如何显示AJAX调用结果?

Javascript 当用户移动到其他页面时,如何显示AJAX调用结果?,javascript,jquery,angularjs,ajax,signalr,Javascript,Jquery,Angularjs,Ajax,Signalr,我在服务器端有一个长时间运行的函数,它是通过AJAX调用的。 但在用户发送AJAX请求后,他们可以移动到其他页面。我不想显示AJAX微调器来阻止用户 即使用户移动到其他页面,如何显示AJAX调用结果? 我应该考虑使用Sigalr?< /P> 谢谢 更新: 我使用的是ASP.NETMVC、jQuery、AngularJs,但我的应用程序不是单页应用程序 您不能在另一个页面中显示AJAX结果,一旦离开页面,您的JS进程就会被终止 一种解决方案是在复杂函数完成运行后将结果推送到客户端(使用web套接字

我在服务器端有一个长时间运行的函数,它是通过AJAX调用的。 但在用户发送AJAX请求后,他们可以移动到其他页面。我不想显示AJAX微调器来阻止用户

即使用户移动到其他页面,如何显示AJAX调用结果? 我应该考虑使用Sigalr?< /P> 谢谢

更新:
我使用的是ASP.NETMVC、jQuery、AngularJs,但我的应用程序不是单页应用程序

您不能在另一个页面中显示AJAX结果,一旦离开页面,您的JS进程就会被终止


一种解决方案是在复杂函数完成运行后将结果推送到客户端(使用web套接字或类似的东西),或者使用AJAX处理页面重新加载,以避免实际的页面刷新。

如果您希望将结果存储并拉到其他地方供以后使用,您可以启动一个HTTP或Websocket请求来启动某种类型的任务,然后您可以稍后使用AJAX或Websocket来检查作业/任务的状态/结果

您试图做的是将结果存储在本地,而这不是这类事情的工作方式。如果您正在启动一个ajax请求,这意味着您正在访问某种API,这意味着API端点应该是密钥持有者,而不是用户的浏览器


你可以发起一个请求,然后跟踪用户到哪里,就像facebook的工作方式一样。您发送一条消息,转到一个全新的页面,消息框仍然会出现,因为它已经加载了javascript,启动了对服务器的调用以获取信息。web上的待办事项列表示例已经是一个很好的例子。你们可以在每一页上写一份待办事项清单,把它和信号机联系起来。不过,没有在浏览器中存储信息,只是丢失了对原始请求结果的ajax请求。或者在SignlR websocket连接监视服务器端对象的情况下。

如果用户已移动,则无法提醒他们结果。您应该在window.onbeforeunload事件中包含一个AJAX中止调用。假设您使用的是angularJS(来自您包含的标记),那么在使用URL的
ngRoute
时,您应该有一个单页应用程序,所以您不应该关心“移动到不同的页面”如果对后端的调用是在服务而不是控制器中处理的,那么在用户返回到能够显示结果的视图之前,没有理由不能将调用结果存储在服务中。JS进程将停止,但如果AJAX调用已经启动了服务器端进程,这将继续下去。这就是为什么在窗口的onbeforeunload事件中进行中止调用是有意义的。这是真的,但我的意思是,如果刷新页面,即使服务器进程完成并返回一些内容,处理AJAX调用成功的代码也不会运行。如果他使用websockets将完成事件从服务器推送到客户机,即使在重新加载之后也会工作。我不熟悉AJAX abord调用,但这是否意味着服务器上的进程永远不会完成?也许这个过程仍然应该完成并返回一些东西,即使用户已经移动到另一个页面。实际上OP询问如何使用
signal
,这是web套接字之类的东西