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