我正在开发一个asp.net mvc3应用程序。
我有这个Jquery函数
function CheckSession() {
$.ajax({
type: 'POST',
url: '@Url.Action("CheckSession", "Home")',
success: function (isAvailable) {
return isAvailable;
},
complete: function (owner) {
},
error: function (owner) {
alert('Error Getting session');
return false;
}
});
}基本上,这个会话所做的是从HomeController调用一个操作,该操作将返回true或false。
我想要做的是,在应用程序中的每个ajax调用之前,我想首先使用这个函数。如果它返回true,我们将继续调用,否则我们什么都不做。
有没有一种方法可以完成这个,而不必在每个ajax调用之前遍历所有代码并调用它?
我知道这可以通过在每个ajax之前调用它并测试返回来完成,但是我有大量ajax调用。
我要找的是一个事件处理程序,它在发出ajax调用之前触发
就像这样:
$(ajax).beforeCall(function (event) {
if (CheckSession()){
event.ProceedWithCall;
}
else {
//Stop the call;
return false;
}
});发布于 2012-04-26 11:09:26
您可以使用ajaxSetup并设置如下beforeSend函数:
$.ajaxSetup({
beforeSend: function(){
return !CheckSession();
}
});beforeSend 文档
一个预请求回调函数,可用于在发送对象之前修改jqXHR (在jQuery 1.4.x,XMLHTTPRequest中)。使用此设置自定义标头等。jqXHR和设置映射作为参数传递。这是一个Ajax事件。*返回beforeSend函数中的false将取消请求.
ajaxSetup 文档
描述:为未来的Ajax请求设置默认值。
发布于 2012-04-26 11:03:14
使用beforeSend(jqXHR,设置)回调:
一个预请求回调函数,可用于在发送对象之前修改jqXHR (在jQuery 1.4.x,XMLHTTPRequest中)。使用此设置自定义标头等。jqXHR和设置映射作为参数传递。这是一个Ajax事件。在beforeSend函数中返回false将取消请求。
有关更多信息,请参见http://api.jquery.com/jQuery.ajax/。
发布于 2012-04-26 11:17:05
就我个人而言,我可能会这样做,以便调用会话检查逻辑的是您的ASP.NET端点,而不是客户端Javascript。
想想看:您启动一个AJAX调用,启动.NET代码来检查会话,返回一个布尔值,如果true启动另一个AJAX调用。为什么不直接启动真正的 AJAX调用(即AJAX调用2),并让ASP.NET端点处理您使用AJAX调用1调用的任何内容?
您将以这种方式节省HTTP请求往返行程,考虑到您已经拥有了tons of AJAX calls,这将有很大的收益。
只有我的两分钱。不过,如果不是这样,我会在上面加上@gdoron的答案。
https://stackoverflow.com/questions/10332071
复制相似问题