触摸屏租赁
Touch screen rental
广告机租赁
Advertising rental
机器人租赁
Robot leasing
 当前位置:首页 > > Ajax提交Form表单用encodeURIComponent在asp下解决乱码的问题

Ajax提交Form表单用encodeURIComponent在asp下解决乱码的问题

做个asp环境下的页面,用到Ajax提交表单,接收页面编码是bg2312的,传的页面也是gb2312的,用javascrip的encodeURIComponent编码传递,接收中文老是乱码,狂抓了半天,页面编码换来换去也是解决不了,到网上狂搜,找到一篇能解决的文章。

文章提到关键是要两次encodeURIComponent转码,而我只是转了一次,结果花费了半天去捣鼓。

最终解决部分代码如下

创建Ajax对象省略……

单击后取得表单项目

function formToString(formObj){
var allStr="";
if(formObj){
 var elementsObj=formObj.elements;
 var obj;
  if(elementsObj){
   for(var i=0; i<elementsObj.length;i++){
    
    obj=elementsObj[i];
    if(obj.name!=undefined&&obj.name!=""){
     if(i==0){
      allStr =obj.name+"="+encodeURIComponent(encodeURIComponent(obj.value));//关键的两次转换
     }
     else{

        allStr+="&"+obj.name+"="+encodeURIComponent(encodeURIComponent(obj.value));//关键的两次转换 

     }    

   }
  }
  }else{
  alert("没有elements对象!");
  return ;
}
}else{
alert("form不存在!");
return ;
}
return allStr;
}

 接收asp页面:

<script language="javascript" type="text/javascript" runat="server">

function TextValue(str){
    return (str == null ? "" : decodeURIComponent(str));
}
</script>

<%

Response.Write("接收的值= " & TextValue(Request.Form("Form_names")))//换成要显示的表单元素的Name属性值

%>


工作室地址:重庆石桥铺电脑城B座 | 微信:z35544216 | 网址:www.35544216.com