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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – $.ajax({async:false})请求仍然异步发射?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在这里有一个小问题。我试图实现以下场景:

>用户打开主页并看到其他用户和点击的列表
添加一个到他的朋友列表。
>我向服务器资源发出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 
}
原文链接:https://www.f2er.com/aspnet/254847.html

猜你在找的asp.Net相关文章