JQuery установить AJAX результат для внешней переменной обратного вызова - PullRequest
1 голос
/ 14 июня 2011

Мне нужно установить переменную для результатов 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 ]

2 голосов
/ 14 июня 2011

Ты совсем близко. Передайте функцию обратного вызова на 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, это должно произойти в обратном вызове.

0 голосов
/ 14 июня 2011

Вы пытались установить асинхронное в ложь?

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();
      }
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...