私たちのアプリケーションでは、ユーザー入力はそのまま保存され、それをエンコードする役割を持つ UI に返されます。
以下は、javascript を含むサーバーから返された JSON データの例です。
{"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 をアプリケーションで実際にうまく機能させるために多くの時間を費やしました (素晴らしいソフトウェアに感謝します)。
問題へ - フォーマッタで
} else if($.fmatter){
常に呼び出されます。私のjavascriptの知識では、 $.fmatter は常にtrueであるため、最後のelseは呼び出されません。実際には、バグはベース モジュールではなく jqGrid の Formatter モジュールにあるようです。
$.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;
};