带有 jqGrid 错误消息的警报

Posted

技术标签:

【中文标题】带有 jqGrid 错误消息的警报【英文标题】:Alert with jqGrid error messages 【发布时间】:2011-11-10 08:35:01 【问题描述】:

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

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

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

【问题讨论】:

【参考方案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 中只能读取本地数据。如果从服务器获取数据,则异常发生在$.ajaxsuccess 回调中。确切地说,它发生在addJSONDataaddXmlData 内部,具体取决于您使用的数据类型。要捕获异常,您应该修改 the place 中的 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(); 

我在the 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 更小。

另一个很好的最小化器在线here。您应该只使用“简单”优化。

【讨论】:

我已经尝试过了,但没有成功。有人告诉我这是因为 jqgrid 代码已经有了很大的 try catch,所以我没有机会做我想做的事。不过我不确定,这就是我发布问题的原因。

以上是关于带有 jqGrid 错误消息的警报的主要内容,如果未能解决你的问题,请参考以下文章

使用 vuejs 显示带有警报的错误

IOS 在字符串中设置错误消息以显示在警报中

如何根据 Firebase Auth 错误消息在 Flutter 中显示自定义警报对话框?

在 jQuery 弹出窗口或 MVC 4 的警报中显示错误消息

Laravel 8:有没有办法在警报框中显示默认表单错误消息

当我使用库 (RODBC) 时,出现错误消息警报“无法加载 odbcji32.dll”