在我們的應用程序的用戶輸入,保存爲是,並返回到UI,其職責是編碼。
這裏的例子從服務器返回的JSON數據包含的JavaScript
{"page":1,"total":1,"records":1,"rows":[{"id":"1","cell":["10jcmjn30jjiej8l499p","NO_ALERTS:Ei hälytyksiä","<script>console.log('jep');</script>","Pentti P.","3.4.2012 15:47","Kaupunki","Teiden auraus, KLO","Muu, Moite, Kiitos","Käsittelyssä, Odottaa vastausta","Ei määritetty","Luottamuksellinen","-","0","Kirjattu","x"]}]}
我用大量的時間來使jqGrid的工作其實相當不錯,在我們的應用程序(偉大的軟件感謝)和addJSONData一直使用,所以我不會改變它,無需這樣做。
問題來了 - 在格式化
} else if($.fmatter){
總是被調用。在我的javascript知識中,$ .fmatter總是如此,所以最後的其他部分永遠不會被調用。實際上,這個bug似乎在jqGrid的格式化模塊中不在基本模塊中。
$ .fn.fmatter沒有做任何編碼。在我的情況它從來就沒有到
if ($.fn.fmatter[formatType]){
塊,但它總是返回給cellval原樣。也許這將是編碼的正確位置?
這是我做的,使這項工作在我們的應用
$.fn.fmatter = function(formatType, cellval, opts, rwd, act) {
// build main options before element iteration
var v=cellval;
opts = $.extend({}, $.jgrid.formatter, opts);
if ($.fn.fmatter[formatType]){
v = $.fn.fmatter[formatType](cellval, opts, rwd, act);
} else {
v = $.jgrid.htmlEncode(cellval);
}
return v;
};