2013-06-30 97 views
1

我有一個Javascript函數,名爲getCartProducts(),它通過AJAX使用$.post()得到一個JSON數組,返回一個值。我想讓我的函數返回這個值,但我不知道該怎麼做。

這裏是我的功能:

function getCartProduct(id){ 
    $.post('core/ajax/getCartProduct.ajax.php', {id: parseInt(id)}, function(data){ 
    var result = data; 
    }); 
    return result; 
} 

我知道這不會工作,因爲TE變量的結果是隻有在$.post()功能活躍,但我不知道如何得到它直。

回答

5

添加一個回調函數(AJAX是異步的,所以你的回報正在熱播之前有任何的數據返回):

function returnData(param) { 
    console.log(param); 
} 

現在添加回調函數作爲參數傳遞給您的AJAX功能,並讓運行它:

function getCartProduct(id, callback){ 
    $.post('core/ajax/getCartProduct.ajax.php', {id: parseInt(id)}, function(data){ 
     callback(data); 
    }); 
} 

getCartProduct(id, returnData); 
+1

請閱讀重複問題,然後從其接受的答案中使用「延遲」對象方法。它比傳遞迴調要強大得多。 「現代」的方法是'返回$ .post(...)',然後調用者可以用'getCartProduct(myId).done(function(data){...})處理結果的承諾' – Alnitak