2011-11-10 60 views
1

我想在加載我的jqGrid表時發生錯誤時發出警報。例如,當jsonReader沒有得到很好的配置,當repeatitems是真的而不是假像,U可以在Firebug看到錯誤:警報與jqGrid錯誤消息

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

我怎樣才能把這樣的錯誤警報?我已經嘗試過使用loadError,但它不起作用,因爲它甚至沒有被觸發。

回答

3

似乎對我說,你應該只使用try - catch塊以上的jqGrid代碼:

try { 
    // create the grid 
    $("#list").jqGrid({ 
     // all jqGrid options 
    }); 
} catch (err) { 
    // display the error message which you want 
    alert(err); 
} 

修訂:你說得對,這是我的工作之前,IE只讀取本地數據描述的try {...} catch (err) {...}。在從服務器獲取數據的情況下,異常發生在success$.ajax的回調中。確切地說,它發生在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。您只應使用「簡單」優化。

+0

我已經試過,並沒有工作。有人告訴我,這是因爲jqgrid代碼已經有了很大的嘗試,所以我沒有機會做我想做的事情。但我不確定,這就是我發佈這個問題的原因。 – user998692

+0

@ user998692:你說得對。我修改了我的答案。 – Oleg

+0

謝謝你的幫助。 – user998692