Ajax调用没有返回正确的变量

Bro*_*die 4 javascript ajax jquery

可能重复:
jQuery:在ajax调用成功后返回数据

我有一个问题,让这个ajax功能工作,不知道我搞砸了.

var getTotalEntries = function(query) {
  var total;
  $.ajax({
    url: url,
    data: query,
    dataType: 'jsonp',
    success: function(data) {
      console.log(data.total);
      total = data.total;
    }
  });

  return total;     
};
Run Code Online (Sandbox Code Playgroud)

这会将65记录到控制台,但返回undefined ...不确定发生了什么.

jmo*_*253 5

ajax调用和return语句是异步的,而不是同步的,所以你的return语句在ajax调用返回之前触发并设置变量.

处理此问题的一种方法是使用成功回调内的数据执行您要执行的任何操作.

$.ajax({
    url: url,
    data: query,
    dataType: 'jsonp',
    success: function(data) {
      console.log(data.total);
      total = data.total;

      // do stuff with total here, or invoke function that uses total
      doSomething(total);
    }
});
Run Code Online (Sandbox Code Playgroud)