ajax请求,在success、error模块中return无效

来源:互联网 发布:学大数据要高数基础吗 编辑:程序博客网 时间:2024/05/01 15:55
        function check() {            $.ajax({                url: 'Handler.ashx',                cache: "false",                success: function(msg) {                    if (msg == "2") {                        return true;                    }                    else {                        return false;                    }                },                error: function(msg) { alert(msg) }            });        }

上边是一段js代码,在测试过程中发现return true;return false没起作用,特郁闷,仔细看了几遍;实在无可奈何上网搜,一大堆,哎,原来这样啊;

我们可能都知道ajax默认的是异步操作,还有在success模块中return true、return false;这样是不对的,这里的return决定是否执行下一步仅此而已,并不是check函数的返回值;如果要想给check函数返回值要在它的最底部;

还有要把它的模式改为同步,即使async:false;这样在函数获取数据的时候让它等待执行成功获取到数据后才可让它执行下边的过程;

解决办法是先在头部声明一变量,在success模块中给变量赋值,在最后返回值;SO;

        function check() {            var flag = true;            $.ajax({                async: false,                url: 'Handler.ashx',                cache: "false",                success: function(msg) {                    if (msg == "2") {                        flag = true;                    }                    else {                        flag = false;                    }                },                error: function(msg) { alert(msg) }            });            if (flag) {                return true;            }            else {                return false;            }        }