2013-07-17 39 views
0

我想將我的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' 
); 

我第一次「嗨」,然後「你好」的解決方案,但我想要另一種方式:先'你好',然後'嗨'。我敢肯定,我沒有以正確的方式使用.then()並坦率地說,我開始想,我永遠不會真正掌握$.Deferreds - 我認爲$.ajax是一個Deferred對象與所有的利益和特性......

+5

你的'then'回調不是一個函數。 – Blender

+0

+1作爲解決方案 - 太糟糕了,我不能接受它。 sayHiFunction()將會在ajaxHandler()完成時完成( – tim

回答

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'); 
} 
+0

)。 – tim

+0

@tim?我沒有調用'sayHiFunction();'直到'ajaxHandler()'完成。我不確定有什麼問題。我只是自己測試它,它工作得很好。 – James