Breeze.js解析XHR.responseText

时间:2013-11-29 22:56:22

标签: json parsing breeze responsetext

从1.1.3升级到1.4.2当Breeze尝试解析HTML格式的responseText而不是JSON时,我一直在获取未捕获的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;
}

由于

1 个答案:

答案 0 :(得分:0)

我会升级到Breeze的最新版本,现在是1.4.6。这个版本在新的HttpResponse对象周围有一个try / catch,它是XHR的包装器。