加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – $.ajax({async:false})请求仍然异步发射?

发布时间:2020-12-15 19:35:00 所属栏目:asp.Net 来源:网络整理
导读:我在这里有一个小问题。我试图实现以下场景: 用户打开主页并看到其他用户和点击的列表 添加一个到他的朋友列表。 我向服务器资源发出Ajax请求以验证用户 登录,如果是,我向另一个服务器发出另一个ajax请求 资源实际添加到用户的朋友列表。 听起来很简单?
我在这里有一个小问题。我试图实现以下场景:

>用户打开主页并看到其他用户和点击的列表
添加一个到他的朋友列表。
>我向服务器资源发出Ajax请求以验证用户
登录,如果是,我向另一个服务器发出另一个ajax请求
资源实际添加到用户的朋友列表。

听起来很简单?这是我做的:我创建了一个函数isLoggedIn将发出第一个请求到服务器,以确定用户是否登录。我使用jQuery.ajax方法发出此请求。这里的我的功能看起来像:

function isLoggedIn() {

    $.ajax({
    async: "false",type: "GET",contentType: "application/json; charset=utf-8",dataType: "json",url: "/isloggedin",success: function(jsonData) {
            alert("jsonData =" + jsonData.LoggedIn);
            return jsonData.LoggedIn;
        }
    });
}

返回的JSON非常简单,看起来像下面这样:

{ LoggedIn: true } or { LoggedIn : false }

现在这个方法实际上工作并正确显示警报:JsonData = true如果登录,并且JsonData = false如果没有登录。
到这一点没有问题,当我尝试调用这个方法时出现问题:我这样调用它:

$(".friend_set .img").click(function() {
    debugger;
    if (isLoggedIn()) { 

        alert("alredy logged in");
        trackAsync();
        popupNum = 6;
    }
    else {
        alert("not logged in"); //always displays this message.
        popupNum = 1;
    }
    //centering with css

    centerPopup(popupNum);
    //load popup
    loadPopup(popupNum);
    return false;

});

调用isLoggedIn总是返回false,并且在ajax请求完成之前返回false(因为messagejsonData = true显示在消息“not logged in”之后)。我确保请求是** NOT ** Asynchronous by statingasync:false`!

显然,它仍然是异步工作,虽然。我在这里缺少什么家伙?

解决方法

你需要async:false,而不是async:“false”。 (即传递布尔值false,不是字符串“false”)。

编辑:
也有异步请求,你需要在调用ajax后返回一个值,而不是在你的成功处理程序内部:

function isLoggedIn() {
    var isLoggedIn;
    $.ajax({
        async: false,// ...
        success: function(jsonData) {
            isLoggedIn = jsonData.LoggedIn
        }
    });
    return isLoggedIn 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读