0

我有以下 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"] is not a function

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

感谢您的帮助。

4

2 回答 2

5

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

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

于 2013-01-24T11:36:13.717 回答
0

;函数声明后丢失。

showErrors = function(){
    console.log('errors');
};
于 2013-01-24T11:35:18.450 回答