javascript - 使函数根据 AJAX 响应返回 false

标签 javascript jquery ajax

我有一个从另一个函数中调用的函数

function CheckForSession() {
        var str="chksession=true";

        jQuery.ajax({
                type: "POST",
                url: "chk_session.php",
                data: str,
                cache: false,
                success: function(res){
                    if(res == "0") {
                      alert('Your session has been expired!');
                    }
                }
        });
}

如果响应等于 0,如何使整个函数 CheckForSession 返回 false?

附注在我的应用程序中,对此函数的响应只能是 1 或 0。

最佳答案

由于 AJAX 请求的异步特性,您无法执行此操作。

最适合您的解决方案是使用 promises :

function CheckForSession() {
    var str="chksession=true";

    return jQuery.ajax({
            type: "POST",
            url: "chk_session.php",
            data: str,
            cache: false,
            success: function(res){
              blabla = res;
                if(res == "0") {
                  alert('Your session has been expired!');
                }
            }
    });
}

CheckForSession().then(function(data) {
    // successful
}, function() {
    // error
})

jQuery.ajax 默认返回 Promise 对象,当 ajax 请求完成时 i 被解析。然后你可以根据结果编写你的操作

http://api.jquery.com/jquery.ajax/

关于javascript - 使函数根据 AJAX 响应返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132062/

相关文章:

ajax - $routeProvider : templateUrl requests with X-Requested-With header

javascript - 为什么我不能将 externalHTML 附加到 javascript 中的元素?

javascript - knockout 在数组中设置可观察数组

Javascript深层嵌套数组过滤器

javascript - 如何禁用右键单击灯箱图像?

javascript - 使用 jQuery 在页面刷新之前显示消息

javascript - 关闭时出现 WebSockets 错误

javascript - 自动检查父复选框

jquery - 如何格式化使用 $.load 或 $.get 或 $.ajax 加载的(css)数据?

html - 提升 Ajax 多选框