Оповещение с сообщениями об ошибках jqGrid
Я хотел бы получить предупреждение при возникновении ошибок при загрузке моей таблицы jqGrid. Например, когда jsonReader плохо настроен, например, когда repeatitems имеет значение true вместо false, U может видеть в Firebug ошибку:
ccur is undefined
[Break On This Error] idr = ccur[idn] || idr;
Как я могу поместить такую ошибку в предупреждение? Я уже пытался использовать loadError
, но это не работает, потому что это даже не срабатывает.
1 ответ
Мне кажется, что вы должны просто использовать try - catch
заблокировать код jqGrid:
try {
// create the grid
$("#list").jqGrid({
// all jqGrid options
});
} catch (err) {
// display the error message which you want
alert(err);
}
ОБНОВЛЕНО: Вы правы, try {...} catch (err) {...}
который я описал до работы в IE только с чтением локальных данных. В случае получения данных с сервера, исключение происходит внутри success
обратный вызов $.ajax
, Чтобы быть точно это происходит внутри addJSONData
или же addXmlData
зависит от типа данных, которые вы используете. Чтобы поймать исключение, вы должны изменить код jqGrid на месте. Модифицированный код может быть примерно следующим
success:function(data,st, xhr) {
if ($.isFunction(ts.p.beforeProcessing)) {
ts.p.beforeProcessing.call(ts, data, st, xhr);
}
try {
if(dt === "xml") { addXmlData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
else { addJSONData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
if(lc) { lc.call(ts,data); }
if (pvis) { ts.grid.populateVisible(); }
} catch (err) {
alert(err);
}
if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}
data=null;
if (npage === 1) { endReq(); }
}
Я протестировал в демоверсии соответствующую модифицированную версию jquery.jqGrid.src.js, которая отображает сообщение об ошибке. Я не воспроизвел точно ту ошибку, которую вы описали, поэтому сообщение об ошибке немного другое, как в вашем случае.
Если вам нужна свернутая версия измененного файла jquery.jqGrid.src.js, вы можете создать его самостоятельно с помощью любого минимизатора JavaScript. Например, Microsoft Ajax Minifier можно бесплатно загрузить и установить. Использование как
ajaxmin.exe jquery.jqGrid.src.js -out jquery.jqGrid.min.js
создаст новую свернутую версию jquery.jqGrid.src.js, которая будет даже немного меньше оригинальной jquery.jqGrid.min.js.
Еще один хороший минимизатор доступен онлайн здесь. Вы должны использовать только "Простую" оптимизацию.