我只是过度使用我的 JS 代码并希望eval()
用window[functionName]
. 所以我只是在 JSFiddle 中做了一个快速测试,所有的工作都很好,下面的行:
var fnName = "Page_test";
var foo = "yammy";
var Page_test = function(bar) {
return bar;
}
var Obj = window[fnName];
alert(Obj(foo));
(链接到这个 JSFiddle -> http://jsfiddle.net/juSHj/)
现在我尝试将以下代码行替换为eval()
具有上述概念的邪恶:
旧代码:(像魅力一样工作/在ajax成功后被解雇)
...
success: function(ret) {
if(returnFnAjaxForm != "") {
eval(returnFnAjaxForm+"('"+encodeURI(jQuery.trim(ret))+"')");
}
}
...
新代码:
返回:未捕获的类型错误:对象 [object Window] 的属性 'dummyFn' 不是函数
...
success: function(ret) {
if(returnFnAjaxForm != "") {
fnObj = window[returnFnAjaxForm];
if(typeof(fnObj) == "function") { // this is optional
fnObj(encodeURI(jQuery.trim(ret)));
}
}
}
...
我很好奇我在哪里犯了错误。是的,我尝试触发的功能存在并且用var
. 这个概念可能无法在 ajax 响应中使用吗?
谢谢你的帮助。
(使用 jQuery)