2013-07-12 52 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數據,它也允許回調。

DOM的準備,

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