【www.gdgbn.com--jquery】

 

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

本文来源:http://www.gdgbn.com/wangyezhizuo/27444/