var data = {
username: escape(your user name here),
password: escape(your password here),
};
var jsonstr = json.stringify(data); // the json2 method.
$.ajax({
url: '../service.asmx/login',
data: 'userinfo=' + jsonstr,
contenttype: "application/json; charset=utf-8",
datatype: "jsonp",
type: "get",
success: function(response) {
…
},
error: function(a, b, c) {
…
}
});
方案就是使用網頁特效的escape方法來對中文字元進行編碼,然後到webservice那裡會自動解碼成為中文。
今天又碰到了另外一個問題:用jquery ajax get傳送瑞典字元等unicode字元出現亂碼,即便是用了escape也無濟於事。
思考: 通過get方法發送的請求實際上還是通過uri來傳送參數的,那麼get方式傳送的字元就與檔案設定的編碼格式無關了,完全是由uri來決定傳送的是什麼,那麼如果對uri進行編碼呢?
事實上,javascript已經有這樣的全域函數來實現對uri的編碼了:encodeuri(uri),讓jquery ajax發送一個由uri編碼好的資料就不會出現亂碼了,而且在webservice端還能自動對資料進行decode.
改善後的代碼如下:
var data = {
username: encodeuri(your user name here),
password: encodeuri(your password here),
};
var jsonstr = json.stringify(data); // the json2 method.
$.ajax({
url: '../service.asmx/login',
data: 'userinfo=' + jsonstr,
contenttype: "application/json; charset=utf-8",
datatype: "jsonp",
type: "get",
success: function(response) {
…
},
error: function(a, b, c) {
…
}
});