因此,这是处理xmlhttprequest的简单JavaScript代码的一部分。产生错误的部分位于底部(否则为):
httpReq.onreadystatechange = function(){
if (httpReq.readyState == 4) {
if (httpReq.status == 200) {
var strRes = httpReq.responseText;
if(xmlOrig) strRes = (new $Xml(strRes, true)).conteudo(xmlOrig);
if(elemDest) $id(elemDest).innerHTML = strRes;
if(func) {
var dadosArray = new Array(4, strRes, httpReq, 'OK', 'Concluído com sucesso.');
window[func](dadosArray);
}
} else {
if(elemDest) elemDest.innerHTML = 'Erro: '+httpReq.status+' | '+httpReq.statusText;
if(func) {
var dadosArray = new Array(4, false, httpReq, 'erro', 'Erro, conteúdo não carregado!');
window[func](dadosArray);
}
}
} else if(func){
console.log("func? "+typeof(func));
var dadosArray = new Array(httpReq.readyState);
window[func](dadosArray); // <-- HERE IS THE ERROR!
}
}
但是,console.log将“func”参数作为函数返回,那么错误在哪里?
Safari控制台:
FUNC?功能 TypeError:'undefined'不是函数(评估'windowfunc')
答案 0 :(得分:1)
您确定func
在窗口上吗?您正在检查func
,这可能在任何范围内,您可以致电window.func()
。
答案 1 :(得分:1)
您可能打算window["func"]
代替window[func]
。
后一个表达式等同于window["function(someParam) { ... }"]
(即,func
的实际内容是什么)。 window
可能没有名称为func
的整个字符串化文本内容的属性。