jQuery封装异步ajax

一、通过回调方式:

function ajaxAsync(datas, callback) {
    var param = JSON.stringify(datas);
    $.ajax({
        type: "POST",
        url: "www.********/rest",
        dataType: "json",
        data: {
            data: param
        },
        beforeSend: function (request) {
            loading = layer.load(1, { shade: [0.3, "#fff"] })
        },
        success: function (re) {
            callback(re);
        },
        error: function (re) {
            layer.msg('网络错误,稍后重试')
        },
        complete: function (re) {
            layer.close(loading);
        }
    });
}

使用时:

 ajaxAsync(datas, function (res) {
        if (re.code == 1) {
            console.log(res)
        } else {
            layer.msg(re.msg);
        }
    })

二、通过 $.Deferred (其实就是promise)

function reqAjax(param){
    var deferred = $.Deferred();
    $.ajax({
        type:"post",
        dataType: 'json',
        url:"www.*****/rest",
        data: {
            data: JSON.stringify(param),
        },
        success: function(data){
            deferred.resolve(data)
        },
        error: function(){
            deferred.reject()
        }
    });
    return deferred;
}

使用时:

var defer = $.Deferred();
var def = reqAjax(param);
def.then(function(res){
    defer.resolve(res);
});
def.fail(function(err){
    defer.reject();
    layer.msg("系统繁忙,请稍后再试!");
});

猜你喜欢

转载自blog.csdn.net/a314753967/article/details/82593136