如何从插件中获取变量的值或从插件中发送值?

时间:2011-11-17 15:50:53

标签: json jquery jquery-plugins

如何从plguin获取变量的值或从插件中发送值?

例如,这是我的插件,它通过ajax检索用户信息,并将用户信息存储在变量中,

(function($){

   $.fn.extend({ 

        get_authentication: function(options) {

            var defaults = {
                file:           'authentication_json.php',
                location:       'cms/'
            }

            var options = $.extend(defaults, options);

            var o = options;
            var object = $(this); // now the object is the selected element such as #popup

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

                if(data) var user_id = data.user_id;

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

            },"json");
        }
    });

 })(jQuery);

当我点击某个链接时,我会调用此插件,

$('.get-user').click(function(){

   $.fn.get_authentication();
   alert(user_id);
});

我收到这样的错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我为你的插件添加了一个回调。这是一个示例+修改后的代码

(function($) {
    $.fn.extend({
        get_authentication: function(options) {
            var defaults = {
                file: 'authentication_json.php',
                location: 'cms/',
                callback: function(user_id) {}
            }
            var options = $.extend(defaults, options);

            var o = options;
            var object = $(this); // now the object is the selected element such as #popup
            $.get(http_root + rp_cms + o.file, function(data) {
                if (data)
                    options.callback(data.user_id);

                // Redirect if the date returns as 'expired'.
                if (data && data.error == 'expired') window.location = http_root + o.location;
                    alert("Data Loaded: " + data);
            }, "json");
        }
    });
})(jQuery);

$(function() {
    $.fn.get_authentication({
        callback: function(user_id) {
            alert(user_id);
        }
    });
});

答案 1 :(得分:0)

编辑:

正如Manuel所说,使用回调。