当前位置: 代码迷 >> ASP.NET >> 问一个关于AJAX的有关问题,希望高手帮忙
  详细解决方案

问一个关于AJAX的有关问题,希望高手帮忙

热度:2474   发布时间:2013-02-25 00:00:00.0
问一个关于AJAX的问题,,希望高手帮忙
就是我的传值,每次传的要是英文或者数字,就解析正确,但是一传中文,就会乱码,编码方式我也改过。
JScript code
ACT_AJAX_BIAOZHU + "&type=0&p1=" + biaozhula + "&p2=" + bianzhulo + "&p3=" + document.getElementById("biaozhuxinxi").value + "&p4=" + id + "&p5=" + escape(xinxi.toString())


上面这是javascript的代码
然后再回调的时间里面
C# code
String p1 = context.Request.Params["p1"];String p2 = context.Request.Params["p2"];String p3 = context.Request.Params["p3"];String p4 = context.Request.Params["p4"];p3 = HttpUtility.UrlDecode(context.Request.Params["p3"], Encoding.UTF8);String p5 = HttpUtility.UrlDecode(context.Request.Params["p5"], Encoding.UTF8);


就是p5传过来的中文都能正常转换,但是p3传过来的就不能正常转换。。为什么啊?
请求帮助一下。。谢谢各位。。

------解决方案--------------------------------------------------------
JScript code
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
------解决方案--------------------------------------------------------
js 传值的时候中文需要转码。
否则 后台 取不到或是取乱了。

js 网址传参 中文转码 :

url ="&&&&?name="+encodeURI("你好");

后台直接取值即可。不需转换。

------解决方案--------------------------------------------------------
Var params="";
for(var i=0;i<thisform.elements.length;i++){
var elem=thisform.elements;
params+=(elem.name+"="+encodeURIComponent(elem.value.trim()));
if(i!=(thisform.elements.length-1))params+="&";
}
通过encodeURIComponent(参数)传递的值,js下用decodeURIComponent解码取值。但decodeURIComponent处理不了页面是gbk编码的urlencode()这样的数据(这个非常麻烦,好像需要对每个gbk字符专门处理才行,如果页面全部是utf-8的就没有问题了)。

后台如果是gbk编码的话,那不能直接用 urldecode()解用encodeURIComponent传递来的值,而需要转换成utf-8

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/antiking/archive/2007/04/24/1579389.aspx
  相关解决方案