jquery ajax get 亂碼解決方案

來源:互聯網
上載者:User

 

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) {
          …
     }
});

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.