js中方法返回值获取不到!!!

时间:2022-02-02 00:26:57

//检查userid是否存在
function checkUserID(uid) {
    $.ajax({
        type: "post",
        url: "../Handler/CheckUserID.ashx",
        datatype: "text",
        data: { uid: uid },
        success: function (data) {
            //alert(data);
            return data;
        }
    });
}

上面定义了一个用来检查id是否存在的方法,返回值是bool

//失去焦点发送ajax请求验证uid
    $("#txtUId").blur(function () {
        var uid = $(this).val();
        var tag = checkUserID(uid);
        alert(checkUserID(uid));
        if (tag == "False") { //不存在 可以使用
            $("#txtUId").parents('.form-group').addClass("has-success");
            $("#txtUId").parents('.form-group').removeClass("has-error");

        } else { //已存在 不能使用
            $("#txtUId").parents('.form-group').addClass("has-error");
            $("#txtUId").parents('.form-group').removeClass("has-success");
        }
    });

这个失去焦点事件 alert(tag) 是undefined。
方法里面明明有返回值,实在想不通为什么获取不到。。。。
求高人指点!!!

3 个解决方案

#1


1、这个返回值是ajax的success回调函数的返回值,不是checkUserID函数的返回值
2、ajax默认是异步加载数据的,程序不会等待数据加载完成再执行后面的语句,而是会先执行后面的语句,等数据加载完成再执行success回调函数

解决方法
1、把ajax改用同步模式
2、把ajax后面的语句都放到success回调函数中

#2


这样写是不行的!下面的方法你试试
//检查userid是否存在
function checkUserID(uid) {
    $.ajax({
        type: "post",
        url: "../Handler/CheckUserID.ashx",
        datatype: "text",
        data: { uid: uid },
        success: function (data) {
           showdata(data);
        }
    });
function showdata(data){
console.log(data)
}
}

或者是用下面的
//检查userid是否存在
function checkUserID(uid) {
    $.ajax({
        type: "post",
        url: "../Handler/CheckUserID.ashx",
        datatype: "text",
        data: { uid: uid },
        success: function (data) {
           topic.publish("name",data);
        }
    });
}
用的时候topic.subscribe("name",data)
topic.subscribe/publish的用法你查查

#3


有用就给点分,缺分了 js中方法返回值获取不到!!!

#1


1、这个返回值是ajax的success回调函数的返回值,不是checkUserID函数的返回值
2、ajax默认是异步加载数据的,程序不会等待数据加载完成再执行后面的语句,而是会先执行后面的语句,等数据加载完成再执行success回调函数

解决方法
1、把ajax改用同步模式
2、把ajax后面的语句都放到success回调函数中

#2


这样写是不行的!下面的方法你试试
//检查userid是否存在
function checkUserID(uid) {
    $.ajax({
        type: "post",
        url: "../Handler/CheckUserID.ashx",
        datatype: "text",
        data: { uid: uid },
        success: function (data) {
           showdata(data);
        }
    });
function showdata(data){
console.log(data)
}
}

或者是用下面的
//检查userid是否存在
function checkUserID(uid) {
    $.ajax({
        type: "post",
        url: "../Handler/CheckUserID.ashx",
        datatype: "text",
        data: { uid: uid },
        success: function (data) {
           topic.publish("name",data);
        }
    });
}
用的时候topic.subscribe("name",data)
topic.subscribe/publish的用法你查查

#3


有用就给点分,缺分了 js中方法返回值获取不到!!!