Оповещение с сообщениями об ошибках jqGrid

Я хотел бы получать оповещения при возникновении ошибок при загрузке моей таблицы jqGrid. Например, когда jsonReader настроен неправильно, например, когда Repeatitems имеет значение true, а не false, U может увидеть в Firebug ошибку:

ccur is undefined
[Break On This Error] idr = ccur[idn] || idr; 

Как я могу разместить такую ​​​​ошибку в предупреждении? Я уже пытался использовать loadError, но это не работает, потому что он даже не срабатывает.


person user998692    schedule 10.11.2011    source источник


Ответы (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.

Другой хороший минимизатор доступен онлайн здесь. Вы должны использовать только «Простую» оптимизацию.

person Oleg    schedule 12.11.2011
comment
Я уже пробовал это, и это не сработало. Кто-то сказал мне, что это потому, что в коде jqgrid уже есть большая попытка перехвата, поэтому у меня нет возможности делать то, что я хочу. Я не уверен в этом, поэтому и задал вопрос. - person user998692; 14.11.2011