2013-06-30 87 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