Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mootools Request.JSON动态回调_Javascript_Mootools - Fatal编程技术网

Javascript Mootools Request.JSON动态回调

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){

开发一个将所有表格数据作为对象返回的应用程序

某些单元格上会有onclick事件

JSON对象恢复正常,对象调用“cb”中有一个键

这是由服务器上的逻辑设置的

我的问题是对象键cb将包含一个字符串,如何在不使用eval()的情况下将其作为有效函数运行

例如:

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,它会像冠军一样工作。还有别的选择吗?啊。。。错过了。也许这对我来说也有点太早了。窗口工作得很好,但是我喜欢将所有回调封装到一个对象中的想法,完成了,现在正完全按照我想要的方式工作。谢谢!