javascript - js ajax 函数封装 闭包 回调
迷茫
迷茫 2017-04-10 15:50:25
0
5
494

有这样一个函数:

function getUserInfo(){

     $.ajax({
        type: "POST",
        url: "/user",
        dataType: "json",
        contentType: "application/json;utf-8",
        timeout: 6000,
        error: function () { },
        success: function (data) {  
              console.log(data);      
        }
    });
};

执行这个函数, 希望有个回调,例如: 接上上面的函数写

getUserInfo(data,function(data){
    console.log(data);
})

希望 在 以上代码中 可以获取 getUserInfo 函数的 ajax 查询到的 data 数据

该方法有大神指导一下 该如何写吗

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(5)
洪涛

回调

function getUserInfo(data, options) {
    $.ajax({
        type: "POST",
        url: "/user",
        dataType: "json",
        contentType: "application/json;utf-8",
        data: data,
        timeout: 6000,
        error: function () {
            options.fail && options.fail();
        },
        success: function (response) {
            options.success && options.success(response);
        }
    });
}

getUserInfo(data, {
    success: function (response) {
        console.log(response);
    },
    fail: function () {
        //TODO
    }
});

Deferred

function getUserInfo(data) {
    return $.ajax({
        type: "POST",
        url: "/user",
        dataType: "json",
        contentType: "application/json;utf-8",
        data: data,
        timeout: 6000
    });
}

getUserInfo(data)
    .done(function (response) {
        console.log(response);
    })
    .fail(function () {
        //TODO
    });

建议使用第二种方式

伊谢尔伦

jquery的deferred对象。看下这个 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
里面解释的比较详细

阿神

===定义的getUserInfo函数,出入你自定义的回调函数====================

function getUserInfo(callback){

     $.ajax({
        type: "POST",
        url: "/user",
        dataType: "json",
        contentType: "application/json;utf-8",
        timeout: 6000,
        error: function () { },
        success: function (data) {  
              //console.log(data);
              callback(data);      
        }
    });
}

===你的调用代码====

getUserInfo(function(userinfoData){
    //处理你的逻辑
})
Peter_Zhu

为嘛要这么写-。-,这种同步的想法,不对把。按照js的异步的思维,应该是回调function写上后续操作把,如果想写成同步一样的感觉,就必须借助楼上@cely的第三方封装的库

巴扎黑
// success callback 
// error callback
function getUserInfo(success, error){

     $.ajax({
        type: "POST",
        url: "/user",
        dataType: "json",
        contentType: "application/json;utf-8",
        timeout: 6000,
        error: error,
        success: success
    });
};
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!