【问题标题】:Call a function after ajax is done [duplicate]ajax完成后调用函数[重复]
【发布时间】:2016-12-14 04:50:59
【问题描述】:

这是一个执行 ajax 调用的函数

function gettrans(callback) {
  var xml = $.ajax({
    method: 'GET',
    url: 'url/?callback=jsonpCallback',
    dataType: 'jsonp',
    jsonp: !1,
    jsonpCallback: "jsonpCallback",
    data: { drop_lang: dropjslang,},
    success: function (data) {
      callback();
    },
    error: function (data) {
    }
  });
  return xml.responseJSON
}

我想返回xml.responseJSON,但我得到了undefined

有什么解决办法?

【问题讨论】:

  • 如果值本身是异步获取/生成的,则无法同步返回值。 $.ajax 调用是异步的,所以 gettrans 不能同步返回值。你可以返回一个承诺。或者您可以预先调用 ajax 并让成功回调设置您可以使用 gettrans 返回的值/数据,欢迎使用异步编程!

标签: javascript jquery ajax asynchronous


【解决方案1】:

将结果传递给您的回调:

function gettrans(callback) {
  $.ajax({
    ...
    success: function (data) {
      callback(data);
    },
    ...
  });
}

【讨论】:

    【解决方案2】:

    你应该在success中传递一个回调函数:

    success: function(response) {
        console.log(response); // response is the data returned by your ajax query
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多