0

自从从 1.1.3 升级到 1.4.2 以来,当 Breeze 尝试解析 HTML 格式而不是 JSON 的 responseText 时,我遇到了未捕获的 JS 错误。在 1.1.3 版本中,代码被包裹在一个 try/catch 中,它会捕获解析错误。在“JSON.parse(XHR.responseText)”上引发错误。但既然它被抓住了,这很好用。错误消息冒泡给调用者。

var err = new Error();
err.XHR = XHR;
err.message = XHR.statusText;
err.responseText = XHR.responseText;
err.status = XHR.status;
err.statusText = XHR.statusText;
if (err.responseText) {
    try {
        var responseObj = JSON.parse(XHR.responseText);
        err.detail = responseObj;
        if (responseObj.ExceptionMessage) {
            err.message = responseObj.ExceptionMessage;
        } else if (responseObj.InnerException) {
            err.message = responseObj.InnerException.Message;
        } else if (responseObj.Message) {
            err.message = responseObj.Message;
        } else {
            err.message = XHR.responseText;
        }
    } catch (e) {

    }
}
return err;

在 1.4.2 中没有 try/catch,我得到一个未捕获的错误。我不知道我是否应该自己抓住这个。在以前的版本中,我不需要做任何事情。

function extractErrors(XHR) {
    if (!XHR.responseText) return null;
        var responseObj = JSON.parse(XHR.responseText);
        return responseObj && responseObj.EntityErrors;
}

谢谢

4

1 回答 1

0

我会升级到 Breeze 的最新版本,现在是 1.4.6。这个版本确实对新的 HttpResponse 对象进行了 try/catch,该对象是 XHR 的包装器。

于 2013-11-30T01:18:05.273 回答