2013-11-29 5 views
0

С момента обновления с 1.1.3 до 1.4.2 я получаю неотображаемые ошибки JS, когда Breeze пытается проанализировать responseText, который находится в формате HTML, а не JSON. В версии 1.1.3 код заверяется в try/catch, который улавливает ошибку синтаксического анализа. Ошибка вызывается на «JSON.parse (XHR.responseText)». Но поскольку он пойман, это отлично работает. Сообщение об ошибке активируется до вызывающего абонента.Breeze.js синтаксический анализ 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 нет попытки/улова, и я получаю неперехваченную ошибку. Я не знаю, должен ли я сам это поймать. Мне не нужно было ничего делать в предыдущей версии.

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

Благодаря

ответ

0

Я бы обновить до последней версии Breeze, который в настоящее время 1.4.6. У этой версии есть try/catch вокруг нового объекта HttpResponse, который является оберткой над XHR.

Смежные вопросы