在jquery的ajax方法中的success中使用return要注意的问题

starlin 732 2018-08-09

最近项目中偶尔用到了jQuery的ajax请求,需要从后端判断该会员是否存在,然后在返回至前端页面提示错误信息,代码如下:

 $.ajax({
    url: "../sessionActivity/selectPartyAccountByPartyIdAndAcoountNumber?random=" + Math.random(),
    type: 'post',
    dataType: 'json',
    data: data1,
    success: function (data) {
        console.log(data)
        if (data.result=="error") {
            $.messager.alert("警告",  data.msg, "error");
            return false;
        }
    }
 });
 省略其他判断

代码中明明已经return了,却依然走下面的判断了,后来查询得知

jquery的ajax方法;在success中使用return;来结束程序的时候,结束的只是success这个方法,也就是说success中的return的作用范围只是success;

我们可以采用在ajax方法体外通过全局变量isOver的值来决定js函数是否return,将上面的代码改造如下:

var valid = true;
        $.ajax({
            url: "../sessionActivity/selectPartyAccountByPartyIdAndAcoountNumber?random=" + Math.random(),
            type: 'post',
            dataType: 'json',
            data: data1,
            async: false,
            success: function (data) {
                console.log(data)
                if (data.result=="error") {
                    $.messager.alert("警告",  data.msg, "error");
                    valid = false;
                    return valid;
                }
            }
        });
        if(!valid){
            return ;
        }

但是有一点必须要注意:ajax方法的async: false,一定要是false,经过以上代码改造就可以了。


# 前端