如何通过几个函数正确传递jQuery $ .ajax()的结果?

时间:2013-07-17 01:21:31

标签: jquery jquery-deferred

我想将我的ajax函数的结果传递给另一个(有点像“冒泡一个事件”)。我真的需要保持ajax包装器功能,即通用,所以我正在寻找一种不会触及myAjaxHandler()的解决方案

$('button').on(
    'click', 
    myAjaxHandler()
);


function myAjaxHandler(){
    return $.ajax({
        ...
    });
}

myAjaxHandler().done(
    function(result){
        console.log(result); // shows 'hello'
    }
).then(
    console.log('hi') // shows before 'hello'
);

我首先得到'hi',然后'hello',但我想要另一种方式:首先'你好',然后'你好'。我确定我没有以正确的方式使用.then(),坦率地说,我开始认为我永远不会抓住$.Deferreds - 我认为$.ajaxDeferred 1}}具有所有好处和特质的对象......

1 个答案:

答案 0 :(得分:0)

这对你有用吗?它不会弄乱myAjaxHandler()

$('button').on('click', function(){

    myAjaxHandler().done(function(results){
        console.log(results); //Say Hello
        sayHiFunction();      //Say Hi
    });

});


function myAjaxHandler(){
    return $.ajax({
        ...
    });
}

function sayHiFunction(){
    console.log('hi');
}