prototype中文参数乱码解决方案

在使用portotype,调用ajax方法时出现乱码,此时,获取页面中加入

可以试试;; Page.Response.Charset = "gb2312";

如果不奏效,有人提供另外解决方案:

ContractedBlock.gif ExpandedBlockStart.gif Code
  request:  function(url)  {
        
this.url  =  url;
        
this.method  =  this.options.method;
        
this.encoding  =  this.options.encoding;
        
var  params  =  this.options.parameters;

if(this.encoding.toUpperCase()=="UTF-8"){
encode
=encodeURIComponent;
}
else{
encode
=escape;
}

在调用时,加上encoding:  
'gb2312'
var  myAjax  =  new  Ajax.Updater(
"dvContent",
url,
{
method:  
'get',
parameters:  pars,
encoding:  
'gb2312'
});

 
另外还有一种方案;无论web.config中是否是"gb2312",都可以奏效。参考http://www.okajax.com/a/200904/prototype_utf8.html

方法如下;

1.将参数用encodeURI()编码

var  par;  
par
= " param1= " + " 中文值 " + " &param2= " + " 其他值 " ;  
var  url = " server.aspx " ;  
var  myAjx = new  Ajax.Request(url,{method: get ' ,parameters: encodeURI(par) ,onComplete: submit});

 2.接受端代码

NameValueCollection nvc =  HttpUtility.ParseQueryString(Request.Url.Query, Encoding.UTF8);  
string  title  =  (nvc[ " param1 " ==   null ?   ""  : nvc[ " param1 " ]; // 接受中文

给出一个完整的调用示例,

ContractedBlock.gif ExpandedBlockStart.gif Code
ExpandedBlockStart.gifContractedBlock.gif/**//*
InBlock.gifAjax企业名称是否存在检查
ExpandedBlockEnd.gif
*/

None.gif
function CheckCompanyExist()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
var objtxtName=arguments[0];
InBlock.gif    
var objBtnSubmit=arguments[1];
InBlock.gif    
var objBtnCheck=arguments[2];
InBlock.gif    
var currC_ID=arguments[3];
InBlock.gif    
//alert($(arguments[0]).value);
InBlock.gif
    var objtxtValue=$(arguments[0]).value;
InBlock.gif    $(objBtnSubmit).disabled
=true;
InBlock.gif    
if($F(objtxtName).trim())        
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        $(objtxtName).disabled
=!$(objtxtName).disabled;
InBlock.gif        
var url="/tempAjaxService/";
InBlock.gif        
var pars="module=CompanyExist&C_ID="+currC_ID+"&name="+objtxtValue;//$F(objtxtName);//objtxtValue;//
ExpandedSubBlockStart.gifContractedSubBlock.gif
        var myAjax = new Ajax.Request(url, dot.gif{method: 'get', parameters: encodeURI(pars),onComplete : function() dot.gif{
InBlock.gif            
var txt = (''+arguments[0].responseText).evalJSON();
InBlock.gif            
if(txt.Results==0||txt.Results==currC_ID)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//alert(''+arguments[0].responseText);
InBlock.gif
                $(objBtnSubmit).value="提交我的企业信息";
InBlock.gif                $(objBtnSubmit).disabled
=false;
InBlock.gif                alert(
"企业验证通过,您可以继续下一步操作");
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                $(objBtnSubmit).value
="请先确认您的企业信息是否已存在本网中";
InBlock.gif                
if(window.confirm('此企业已存在,想获得该公司管理权限,点击“确定”,了解详情!!\r\n如果不能打开窗口,请检查并取消您所用浏览器的“弹出窗口拦截”功能。\r\n或在浏览器地栏中输入以下地址\r\nhttp://www.agronet.com.cn/ZhengMing.aspx'))
InBlock.gif                    window.open (
'http://www.agronet.com.cn/ZhengMing.aspx','newwindow','height=160,width=800,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');            
ExpandedSubBlockEnd.gif            }

InBlock.gif            $(objtxtName).disabled
=!$(objtxtName).disabled;
ExpandedSubBlockEnd.gif        }
}
);
ExpandedBlockEnd.gif    }
 

None.gif
ContractedBlock.gif ExpandedBlockStart.gif Code
 //Page.Response.Charset = "gb2312";
            NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(Request.Url.Query, Encoding.UTF8); 
            Name
=SQLParser.StringParse(nvc["name"]);


非Ajax的可以参看这里

 http://www.cnblogs.com/downmoon/archive/2007/12/30/1021140.html

转载于:https://www.cnblogs.com/downmoon/archive/2009/11/09/1599199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值