在什么情况下会调用 xhr 方法的错误?即使响应为 200,也会调用错误代码。我正在使用 xhrPost 方法。
更新:
dojo.xhrPost({
url: url,
handleAs: respType /* json */,
content: data,
load: onServerResponse,
error: onHttpError
})
function onServerResponse(response, ioArgs) {
if(onResponse !== null) {
onResponse(response);
}
}
function onHttpError(error, ioArgs) {
if (showHttpError === true) {
var errMsg = "";
switch (ioArgs.xhr.status) {
case 0: errMsg = "Please check Web Server status."; break;
case 404: errMsg = "HTTP (404): Requested Page Not Found"; break;
case 500: errMsg = "HTTP (500): The server reported an Error"; break;
default: errMsg = "Unhandled HTTP error - " + ioArgs.xhr.status;
}
ConsoleUtils.showNotificationAlertDialog(errMsg, ConsoleConstants.INFORMATION);
}
}
这些是来自 Firebug 的响应 header :
服务器 Apache-Coyote/1.1 内容类型 application/json;charset=UTF-8 传输编码分块 日期 2011 年 12 月 18 日星期日 18:06:54 GMT
响应体 {"message":"Kiosk 成功删除","success":true}
尽管返回状态为 200,但仍会调用警报对话框。
最佳答案
在您的 onServerResponse 函数中,您使用了一个名为 onResponse 的变量。 既然你在做: onResponse() 我只能猜测 onResponse 是一个函数。 然后你的测试 if(onResponse !== null) 似乎不合适,也许你想测试响应。
如果你想测试函数是否存在,你可能想检查 typeof onResponse == "function"
此外,如果您正在其中调用一个函数,请确保该函数在正确的范围内... 然后您可能想要使用加载:dojo.hitch(theScopeWhereOnResponseFunctionExists, onServerResponse)
希望这对您有所帮助。
关于ajax 方法中的 Dojo 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553590/