Javascript Mootools Request.JSON动态回调
开发一个将所有表格数据作为对象返回的应用程序 某些单元格上会有onclick事件 JSON对象恢复正常,对象调用“cb”中有一个键 这是由服务器上的逻辑设置的 我的问题是对象键cb将包含一个字符串,如何在不使用eval()的情况下将其作为有效函数运行 例如:Javascript Mootools Request.JSON动态回调,javascript,mootools,Javascript,Mootools,开发一个将所有表格数据作为对象返回的应用程序 某些单元格上会有onclick事件 JSON对象恢复正常,对象调用“cb”中有一个键 这是由服务器上的逻辑设置的 我的问题是对象键cb将包含一个字符串,如何在不使用eval()的情况下将其作为有效函数运行 例如: var archive = function() { console.log('archiving'); } new Request.JSON ({ ... onSuccess: function(r){
var archive = function() {
console.log('archiving');
}
new Request.JSON ({
...
onSuccess: function(r){
//r.cb: 'archive'
docuemnt.id(td).addEvent('click', r.cb);
}
...
});
docuemnt.id(td).addEvent('click',eval(r.cb));//寻找替代方案的工程
我知道我想得太多了,应该没有那么困难。
今天一定还没有喝够咖啡。使用方括号表示法。如果您的函数在全局范围内,请使用
窗口[r.cb]
:
new Request.JSON ({
...
onSuccess: function(r) {
//r.cb: 'archive'
document.id(td).addEvent('click', window[r.cb]);
}
...
});
如果函数不在全局范围内,请将函数移动到对象中:
var callbacks = {
archive: function () { ... },
foo: function () { ... },
...
}
然后使用
回调[r.cb]
您的意思是返回的字符串是函数声明,例如“function(){/*some code*/}”
?也许你可以发布一个r.cb
可能包含的内容的示例。r.cb:“归档”抱歉,尽管我这么做了。存档从结果对象(r)中的服务器返回,cb键作为字符串。变量存档在JS中可用,JS是上面概述的函数。如果我用eval包装r.cb,它会像冠军一样工作。还有别的选择吗?啊。。。错过了。也许这对我来说也有点太早了。窗口工作得很好,但是我喜欢将所有回调封装到一个对象中的想法,完成了,现在正完全按照我想要的方式工作。谢谢!