2013-07-12 1 views
0

Как я могу вернуть некоторые значения из плагина?Как вернуть значения из плагина jquery?

Вот мой плагин,

(function($){ 

    $.fn.extend({ 

     get_authentication: function(options) { 

    var defaults = { 
       file:   'json.php', 
       location:  'xfolder/', 
       callback:  function(data) {} 
      } 

      var options = $.extend(defaults, options); 
      var o = options; 
      var $this = this; 
      var authentication = false; 

      $.get(http_root + o.file, function(data){ 

       // Send the data out from this plugin. 
       if(data) { 
        options.callback(data); 
        authentication = true; 
        // alert(authentication); // --> get 'true' 

        return authentication; 
       } 

       // Redirect if the date returns as 'expired'. 
       if(data && data.error == 'expired') window.location = http_root + o.location;; 

      },"json"); 
     } 
    }); 

})(jQuery); 

Так что, если я получить правильные данные, как формат JSON, я хочу, плагин может вернуть «истина» автоматически. и он также позволяет обратный вызов, если я хочу попасть в данные json.

на дом готов,

var data = $.fn.get_authentication(); 

alert(data); // --> returns 'undefined' 

Возможно ли это?

ответ

1

Вам необходимо вернуть аутентификацию после $.get:

$.get(http_root + o.file, function(data){ 
... 
},"json"); 

return authentication; 
+0

спасибо. попробовал. он просто возвращает 'false', даже если я получаю правильные данные из ajax ... – laukok

+0

Извините - ответил слишком быстро -« $ .get »является сокращением для функции jQuery '$ .ajax'а, которая работает асинхронно. Таким образом, ваш скрипт продолжает работать, не дожидаясь результата вызова ajax. Вот почему мой ответ возвращает «ложь» даже на успех. – MiRaIT

+1

попробуйте использовать "$ .ajax'function вместо установки'async'to'false': – MiRaIT