Мне кажется, что вы должны просто использовать блок 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.
Другой хороший минимизатор доступен онлайн здесь. Вы должны использовать только «Простую» оптимизацию.
person
Oleg
schedule
12.11.2011