自从从 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;
}
谢谢