Jquery在函数中从$ .post()返回值

Dan*_*ing 1 javascript ajax jquery function

我有一个Javascript函数getCartProducts(),它通过AJAX获取一个JSON数组$.post(),返回一个值.我想让我的函数返回该值,但我不知道该怎么做.

这是我的功能:

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

我知道这不会起作用,因为te变量结果只在$.post()函数中有效,但我不知道如何直接得到它.

tym*_*eJV 7

添加一个回调函数(AJAX是异步的,所以在有任何数据要返回之前你的返回被命中):

function returnData(param) {
    console.log(param);
}
Run Code Online (Sandbox Code Playgroud)

现在将该回调函数作为参数添加到AJAX函数中,然后运行它:

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

getCartProduct(id, returnData);
Run Code Online (Sandbox Code Playgroud)

  • 请阅读重复的问题,然后使用其接受的答案中的“延迟”对象方法。它比传递回调强大得多。“现代”方式是 `return $.post(...)`,然后调用者可以使用 `getCartProduct(myId).done(function(data) { ... })` 处理生成的 Promise (2认同)