как передать значение в JQuery Ajax-обработчик успеха - PullRequest
4 голосов
/ 02 июля 2010

Дайте следующий вызов Ajax в jQuery:

  {
  .
  .
  .
  ,
  getSomeData: function(args, myUrl, foo) {
        $.ajax( {
        type: "GET",
        url:  myUrl,
        data: args,
        async: true,
        dataType: 'json',
        success: myHandler  

         });
 },

   myHandler: function (data, textStatus, oHTTP, foo){   ...   }  

};

Может ли значение foo быть каким-либо образом добавлено к аргументам, которые передаются обработчику успеха myHandler? Есть ли способ передать значение на сервер в GET и вернуть это значение клиенту в обратном направлении, появившись в списке аргументов обработчика успеха? Я не могу изменить структуру того, что возвращается в data.

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

Если вы объявите myHandler в запросе, вы можете использовать замыкание .

getSomeData: function(args, myUrl, foo) {
        $.ajax( {
        type: "GET",
        url:  myUrl,
        data: args,
        async: true,
        dataType: 'json',
        success: function (data, textStatus, oHTTP){   ...   }  

         });
 },

таким образом, foo будет доступно вам внутри successобратный вызов.

1 голос
/ 19 августа 2010

Если ваш вызов $ .ajax находится в классе, и в случае успешного обратного вызова передается метод этого класса, он не работает.

РЕДАКТИРОВАТЬ: Вот ответ.Обратите внимание, что я определяю функцию ajaxCall как метод в классе.Я определяю this.before, this.error и this.success как методы ajaxCall, потому что они могут вызывать методы из суперкласса.

function main(url){
  this.url = url;

  this.ajaxCall = function(){

          this.before = function(){
                  //Can call main class methods
                  };
          this.error = function(){
                         //Can call main class methods
                       };
          this.success = function(data){
                           //Can call main class methods
                         };

          //This is how you pass class arguments into the success callback
          var that = this;

          $.ajax({ 
            url: this.url,
            type: 'GET',
            dataType: 'json',
            beforeSend: this.before(),
                error: this.error(),
            success: function(data){that.succes(data);}
          });

  //Run internally by calling this.ajaxCall() after it is defined
  //this.ajaxCall();
}

//Or externally
var main = new main(SOME_URL);
main.ajaxCall();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...