ajax 方法中的 Dojo 错误处理

标签 dojo

在什么情况下会调用 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/

相关文章:

javascript - jquery 是否与 dojo.connect() 等效?

javascript - CSS 菜单与 JavaScript 菜单

javascript - 使用 jQuery (1.8) 动态添加带有 dojo 组合框(版本 1.8.1)的行作为行的元素之一

javascript - jquery 的 .data() 方法的 Dojo 等价物

javascript - 如何在 dojo 应用程序构建配置文件中加载 json 文件?

php - 在 Dojo 按钮上单击执行 PHP 脚本

javascript - 通过单击按钮覆盖 dojo 类函数

javascript - 确保动态添加的 Dojo Dijit 已在 DOM 中注册

javascript - 在从 dojo/-base/array.map 返回数组之前等待 dojo/request/xhr 完成

javascript - 蒙德里安网页布局