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