为了账号安全,请及时绑定邮箱和手机立即绑定

细说JavaScript ajax异步请求return undefined

在制作注册表单验证时我们需要通过ajax请求数据,例如我们需要请求数据库中的用户名判断是否存在,这时我们就需要return,再者我们很多时候需要使用数据库中的数据,这时我们也需要将数据返回出去。

我们看下下面验证数据库是否存在输入的用户名却return undefined的例子

// 发送ajax请求
$.ajax({
    type: "POST",
    url: "checkName.php",
    data: {
        username: $inputVal
    },
    success: function(responseText) {
        if (responseText === "denied") {
            // 若已存在
            return false;
        } else {

            return true;
        }

    }
});

在这我们我们发送了一个异步请求来验证输入的用户名,但结果却没有想的那样返回true or false,却返回了undefined,这是因为你发送了异步请求,但请求的数据还没返回回来,就已经执行到return语句,自然就返回了undefined。

所以我们需要将异步请求变为同步,用回调函数来发送return值,并在ajax的success回调中用变量存储返回值,

var getFalse = function() {
         return false;
    },
    getTrue = function() {
        return true;
    };

var getAjax = function(successFn, failFn) {
    var callBackReturn;
    // 发送ajax请求
    $.ajax({
        type: "POST",
        url: "checkName.php",
        // 发送同步请求
        async: false,
        data: {
            username: $inputVal
        },
        success: function(responseText) {
            if (responseText === "denied") {
                $tipObj.html(tipText[2]);
                callBackReturn = failFn();
            } else {
                $tipObj.html(tipText[3]);
                callBackReturn = successFn();
            }

        }
    });

    return callBackReturn;
};
点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消