1

我想在加载我的 jqGrid 表时出现错误时收到警报。例如,当 jsonReader 配置不正确时,比如当 repeatitems 为 true 而不是 false 时,U 可以在 Firebug 中看到错误:

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

如何在警报中放置这样的错误?我已经尝试过使用loadError,但它不起作用,因为它甚至没有被触发。

4

1 回答 1

3

在我看来,您应该只使用try - catchblock over 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. 确切地说,它发生在您使用的数据类型内部addJSONDataaddXmlData取决于您使用的数据类型。要捕获异常,您应该修改 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(); }
}

我在demo中测试了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 更小一些。

另一个好的最小化器可以在这里在线获得。您应该只使用“简单”优化。

于 2011-11-12T11:10:58.920 回答