首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果值为false (在任何ajax调用之前),停止ajax调用

如果值为false (在任何ajax调用之前),停止ajax调用
EN

Stack Overflow用户
提问于 2012-04-26 11:00:31
回答 3查看 1.7K关注 0票数 1

我正在开发一个asp.net mvc3应用程序。

我有这个Jquery函数

代码语言:javascript
复制
    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调用之前触发

就像这样:

代码语言:javascript
复制
$(ajax).beforeCall(function (event) {
    if (CheckSession()){
        event.ProceedWithCall;
    }
    else {
         //Stop the call;
         return false;
    }
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-26 11:09:26

您可以使用ajaxSetup并设置如下beforeSend函数:

代码语言:javascript
复制
$.ajaxSetup({
  beforeSend: function(){
            return !CheckSession();
      }
});

beforeSend 文档

一个预请求回调函数,可用于在发送对象之前修改jqXHR (在jQuery 1.4.x,XMLHTTPRequest中)。使用此设置自定义标头等。jqXHR和设置映射作为参数传递。这是一个Ajax事件。*返回beforeSend函数中的false将取消请求.

ajaxSetup 文档

描述:为未来的Ajax请求设置默认值。

票数 3
EN

Stack Overflow用户

发布于 2012-04-26 11:03:14

使用beforeSend(jqXHR,设置)回调:

一个预请求回调函数,可用于在发送对象之前修改jqXHR (在jQuery 1.4.x,XMLHTTPRequest中)。使用此设置自定义标头等。jqXHR和设置映射作为参数传递。这是一个Ajax事件。在beforeSend函数中返回false将取消请求。

有关更多信息,请参见http://api.jquery.com/jQuery.ajax/

票数 1
EN

Stack Overflow用户

发布于 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的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10332071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档