我想在加载我的 jqGrid 表时出现错误时收到警报。例如,当 jsonReader 配置不正确时,比如当 repeatitems 为 true 而不是 false 时,U 可以在 Firebug 中看到错误:
ccur is undefined
[Break On This Error] idr = ccur[idn] || idr;
如何在警报中放置这样的错误?我已经尝试过使用loadError
,但它不起作用,因为它甚至没有被触发。
我想在加载我的 jqGrid 表时出现错误时收到警报。例如,当 jsonReader 配置不正确时,比如当 repeatitems 为 true 而不是 false 时,U 可以在 Firebug 中看到错误:
ccur is undefined
[Break On This Error] idr = ccur[idn] || idr;
如何在警报中放置这样的错误?我已经尝试过使用loadError
,但它不起作用,因为它甚至没有被触发。
在我看来,您应该只使用try - catch
block 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
. 确切地说,它发生在您使用的数据类型内部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(); }
}
我在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 更小一些。
另一个好的最小化器可以在这里在线获得。您应该只使用“简单”优化。