February 13,2009
當 jQuery().ajax() 遇到 ASP
利用 jqGrid 新增中文欄位資料時,到伺服器端時,就變成亂碼了。
請 FireBug 大神幫忙,發現 request header content-type 的編碼是 utf-8,查過jqGrid的 source code,裡面也只是調用 jQuery 的 ajax 函數而已。
照理來說,應該可以用 $.ajaxSetup() 來修正,但試了好一陣子,發現沒辦法,即使我在 contentType 裡指定了 charset=big5,最後送出時,仍然會是 utf-8...
好吧,山不轉路轉,再拜請Google大神,發現有人利用 escape() 解,也就是先用 javascript escape() 編碼,server 端再解碼,這樣就解了。
大致的代碼是這樣:
請 FireBug 大神幫忙,發現 request header content-type 的編碼是 utf-8,查過jqGrid的 source code,裡面也只是調用 jQuery 的 ajax 函數而已。
照理來說,應該可以用 $.ajaxSetup() 來修正,但試了好一陣子,發現沒辦法,即使我在 contentType 裡指定了 charset=big5,最後送出時,仍然會是 utf-8...
好吧,山不轉路轉,再拜請Google大神,發現有人利用 escape() 解,也就是先用 javascript escape() 編碼,server 端再解碼,這樣就解了。
大致的代碼是這樣:
//
$("#jqGrid2").jqGrid(
// ... 略 ...
).navGrid( "#pager2", {
// ... 略 ...
add:true,
addfunc: function() {
$("#jqGrid2").editGridRow( "new", {
url: "server.asp",
beforeSubmit: function( postdata, o ) {
var s = postdata[ "your_field_name" ];
var ret=[true, "", ""];
postdata[ "your_field_name" ] = escape( s );
return ret;
}
} );
return false;
}
} );
引用URL
http://cgi.blog.roodo.com/trackback/8295421
回應文章 

版主您好
我們是WEnews(http://wenews.cc)全民新聞網站的編採小組,
您所經營的部落格非常好,內容相當適合刊載於WEnews,
若經NOWnews(今日新聞)採用,就有機會得到稿費、獎金與紅利等好康。
目前我們正在舉辦新加坡特派記者的徵選,免費提供機票與住宿補助。
http://www.nownews.com.tw/events/20090121_wenews_event/
歡迎您的參加,進一步認識WEnews
http://wenews.nownews.com/q_and_a.htm
WEnews 編採小組敬上
Posted by WENEWS
at February 13,2009 15:33