asp.net-mvc - 使用 asp.net mvc/jquery 的全局 "ajax call"通知

标签 asp.net-mvc ajax jquery

每当大型 ASP.NET MVC Web 应用程序对服务器进行 Ajax 调用时,我都需要收到通知。我们使用 jquery 和内置的 Ajax.* 方法来进行远程调用,我想要一种全局的方式来知道我们何时进行调用,而不必手动向每个调用注入(inject)某种“IsMakingCall”方法请求。

我们试图解决的根本问题是 session 超时。如果用户离开页面并去吃午饭(例如),他们返回时会收到错误,因为 ajax 调用返回登录页面而不是预期的 json 或部分 html 结果。

我的想法是有一个 js 计时器,每当我们进行 ajax 调用时它都会重置。这样,如果计时器用完(即他们的 session 现在已经超时),我可以自动将他们注销。这就是美国银行和 mint.com 等网站的运作方式。

谢谢!

最佳答案

我以不同的方式(客户端)处理您描述的问题。我的母版页上有一个 jQuery 插件,它会在 session 即将过期之前提示用户通过对话框更新 session 。如果用户没有响应(或单击注销),则会在应用程序上调用注销操作。如果用户“更新”其 session ,则会向服务器发出 AJAX 回调,从而重置滑动窗口服务器端。

您可以找到code在我的博客上,http://farm-fresh-code.blogspot.com现在它不考虑可能更新 session 的 AJAX 操作,但您可以对其进行检测,以便 jQuery AJAX 通过全局 ajaxStart 重置计时器。 它使用 ajaxStart当发出 jQuery AJAX 请求时重置计时器。我不太使用 MS AJAX,所以我不确定是否有可以使用的全局钩子(Hook)。从检查代码来看,情况并非如此,但您可以通过 AjaxOptions 手动向每个请求添加一个。您也可以研究向 Sys.Net.WebRequestManager 添加处理程序。

关于asp.net-mvc - 使用 asp.net mvc/jquery 的全局 "ajax call"通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2820888/

相关文章:

jQuery Mobile .listview ('refresh' )不工作

jquery - 将应用程序迁移到 Angular 6 : But getting errors while running npm run build --prod. 但命令 npm run build --env=prod 成功运行

jQuery 不适用于负载

javascript - 将 MVC 模型与 'contenteditable' 属性混合——是否可以以简单的方式将数据发送回服务器?

asp.net-mvc - asp.net MVC 如何记住回发时的错误值?

javascript - 如何将复杂的 JavaScript 对象发送到 ASP.net WebMethod?

javascript - 在 $.ajax 中使用 "POST"方法传递数据时出现 500 Internal Server Error

Javascript表单提交问题

c# - ASP.NET MVC 4 不会将 multipart/form-data 序列化为 C# 对象

jquery - 如何在 Asp.net core mvc View 中检查带有枚举值的单选按钮?