Posted in Javascript onNovember 09, 2009
在使用portotype,调用ajax方法时出现乱码,此时,获取页面中加入
可以试试;; Page.Response.Charset = "gb2312";
如果不奏效,有人提供另外解决方案:
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",都可以奏效。
因为网站编码是gb2312。在使用prototype的ajax时遇到中文参数乱码的问题。
方法如下;
1.将参数用encodeURI()编码
var par; par="param1="+"中文值"+"¶m2="+"其他值"; 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"];//接受中文
给出一个完整的调用示例,
/**//* Ajax企业名称是否存在检查 */ function CheckCompanyExist() { var objtxtName=arguments[0]; var objBtnSubmit=arguments[1]; var objBtnCheck=arguments[2]; var currC_ID=arguments[3]; //alert($(arguments[0]).value); var objtxtValue=$(arguments[0]).value; $(objBtnSubmit).disabled=true; if($F(objtxtName).trim()) { $(objtxtName).disabled=!$(objtxtName).disabled; var url="/tempAjaxService/"; var pars="module=CompanyExist&C_ID="+currC_ID+"&name="+objtxtValue;//$F(objtxtName);//objtxtValue;// var myAjax = new Ajax.Request(url, {method: 'get', parameters: encodeURI(pars),onComplete : function() { var txt = (''+arguments[0].responseText).evalJSON(); if(txt.Results==0||txt.Results==currC_ID) { //alert(''+arguments[0].responseText); $(objBtnSubmit).value="提交我的企业信息"; $(objBtnSubmit).disabled=false; alert("企业验证通过,您可以继续下一步操作"); } else { $(objBtnSubmit).value="请先确认您的企业信息是否已存在本网中"; if(window.confirm('此企业已存在,想获得该公司管理权限,点击“确定”,了解详情!!\r\n如果不能打开窗口,请检查并取消您所用浏览器的“弹出窗口拦截”功能。\r\n或在浏览器地栏中输入以下地址\r\nhttps://3water.com/ZhengMing.aspx')) window.open ('https://3water.com/ZhengMing.aspx','newwindow','height=160,width=800,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no'); } $(objtxtName).disabled=!$(objtxtName).disabled; }}); }
Code
//Page.Response.Charset = "gb2312"; NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(Request.Url.Query, Encoding.UTF8); Name=SQLParser.StringParse(nvc["name"]);
prototype 中文参数乱码解决方案
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@