Javascript函数不存在

时间:2013-01-24 11:33:36

标签: javascript jquery scope

我有以下Javascript代码,用于创建具有点击事件的按钮元素。

function Button(id, url, blockMsg){

var id = id;
var url = url;
var blockMsg = blockMsg;
var message;

this.getId = function(){
    return id;
};

this.getMessage = function(){
    return message;
};

block = function(msg){
    $.blockUI({
        message: msg
    });
};

unblock = function(){
    $.unblockUI();
};

showErrors = function(){
    console.log('errors');
}

$(id).bind('click', function(){
    $.ajax({
        url: url,
        type: 'POST',
        beforeSend: function(){
            block(blockMsg);
        },
        error: function(response){
            message = $.parseJSON(response);
            message.action();
            unblock();
            console.log(action);
        },
        success: function(response){
            message = $.parseJSON(response);
            [message.action]();
            unblock();
            console.log(action);
        }
    });
});
};

$(document).ready(function(){
var buttonRegister = new Button('#btnCompanyRegister', '/company/register/', 'register ...');
});

当我点击按钮时,一切正常,我的PHP脚本返回

json_encode(array('action' => 'showErrors'));

在FireBug中我可以看到错误:[" showErrors"]不是函数

我做错了什么?为什么没有指定功能?我有范围问题吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

而不是[message.action]();使用window[message.action]();

message.action是字符串“showErrors” - 它不是函数。您可以从窗口对象中获取全局函数showErrors

答案 1 :(得分:0)

函数声明后缺少;

showErrors = function(){
    console.log('errors');
};