我有以下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"]不是函数
我做错了什么?为什么没有指定功能?我有范围问题吗?
感谢您的帮助。
答案 0 :(得分:5)
而不是[message.action]();
使用window[message.action]();
。
message.action
是字符串“showErrors” - 它不是函数。您可以从窗口对象中获取全局函数showErrors
。
答案 1 :(得分:0)
函数声明后缺少;
。
showErrors = function(){
console.log('errors');
};