Обработка некорректного ответа сервера в extjs
Так исторически сложилось, что разработчики extjs не озаботились обработкой ошибочного ответа от сервера
при получении json данных. Если сервер возвращает json массив не в том формате, который ожидается. Или же
ответ сервера вообще не json массив, то, к примеру, при сабмите формы extjs благополучно падает где-то внутри с фатальной
ошибкой. Лезем внутрь и смотрим почему так.
Открываем extjs-all-debug.js и в районе строчки 6676 наблюдаем слебующую картину:
this.decode = function(json){
return eval("(" + json + ')');
};
Естественно при получении некорректного параметра json, все падает.
Исправляем ошибку. Вместо него пишем нечто похожее на:
this.decode = function(json){
var a;
try {
a = eval("(" + json + ')');
}
catch(e){
alert(json); // эта строчка строго для отладки.
json = '{"success": false, errors:
[{"id":"server_error","msg":"Server Return unknown response"}]}';
a = eval("(" + json + ')');
};
return a;
};
И получаем то, что требуется. На форме вызовется событие falure, а там мы обработаем эту ошибку так как это нам нужно.
Comments
Leave a Reply