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

Posted

技术标签:

【中文标题】如何从插件中获取变量的值或从插件中发送值?【英文标题】:How to get the variable's value from a plguin or send the value out from the plugin? 【发布时间】:2011-12-31 11:46:14 【问题描述】:

例如,这是我的插件,它通过 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);
);

我收到这样的错误。

有什么想法吗?

【问题讨论】:

在你的插件中不要使用对象作为变量名。 object 是一个 javascript 保留名称 quackit.com/javascript/javascript_reserved_words.cfm 【参考方案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);
        
    );
);

【讨论】:

非常感谢这个答案,曼努埃尔。 callback 是我今天刚从你那里学到的关于编写插件的新东西。谢谢! :-)【参考方案2】:

编辑:

正如 Manuel 所说,使用回调。

【讨论】:

$.get 在请求完成时触发一个事件。在发生这种情况时,函数已经完成并且不会返回任何内容

以上是关于如何从插件中获取变量的值或从插件中发送值?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery插件如何从插件内的函数中获取价值

使用 jquery 警报对话框插件,如何将表单中的值发送到回调功能?表格在警报中

如何读取剑侠三LUA 脚本插件 中的值 用C或VB

选择的 Jquery 插件 - 获取选定的值

如何使用键路径从嵌套的字典dart中获取值。

如何使用键路径从嵌套的字典dart中获取值。