jquery将ajax结果设置为外部变量回调

时间:2011-06-14 13:58:51

标签: jquery ajax callback

我需要为ajax查询的结果设置一个变量。我意识到我不能只在成功函数中返回结果,因为这是一个异步调用。但是想实现这个将是一个回调函数,而不是设置为同步调用。

我想实现类似的目标:

myMethod: function() {
   var result = function(callback) {
      this.getResults(params)
   }
},

getResults: function(params) {
   $.ajax({
      type: 'GET',
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data).call();
      }
   });
}

结果=数据

我知道我的语法不对,我已经尝试了很多变化并且找不到有用的东西。任何帮助都会非常感激。感谢您!

2 个答案:

答案 0 :(得分:2)

你很亲密。将回调函数传递给getResults

myMethod: function() {
    this.getResults(params, callback);
},

getResults: function(params, callback) {
   $.ajax({
      type: 'GET',
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data);
      }
   });
}

请注意,我删除了var result =,因为根据您提到的异步性,这不会起作用。如果您需要对data进行进一步处理,则必须在回调中进行。

答案 1 :(得分:-1)

您是否尝试将异步设置为false?

myMethod: function() {
   var result = function(callback) {
      this.getResults(params)
   }
},

getResults: function(params) {
   $.ajax({
      type: 'GET',
      async:false, //<-- Here
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data).call();
      }
   });
}