【发布时间】:2014-07-19 19:59:27
【问题描述】:
所以这是处理 xmlhttprequest 的简单 JavaScript 代码的一部分。产生错误的部分在底部(else if):
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 控制台:
功能?功能 TypeError: 'undefined' 不是函数(评估 'windowfunc')
【问题讨论】:
-
你在哪里定义变量
func是什么?您没有在任何地方传递或定义它? -
我在根目录下定义了一个测试函数。首先,我虽然这是函数内部的错误,但测试函数无关(作为测试)。我认为 Safari 无法准确定位可能是一个错误。
-
找到了:func必须是String,所以不能定义func = Function,而是func = "NameOfTheFunction"。
标签: javascript function evaluation