prototype 中文参数乱码解决方案

在使用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="+"中文值"+"&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"];//接受中文

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


代码如下:

/**//*
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\nhttp://www.jb51.net/ZhengMing.aspx'))
window.open ('http://www.jb51.net/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"]);

(0)

相关推荐

  • prototype 中文参数乱码解决方案

    在使用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.opti

  • jQuery发请求传输中文参数乱码问题的解决方案

    最近在做的需求,涉及到级联查询,需要根据上级下拉框的内容,查询出下级下拉框列表,因为级联只有两级,且后期对表中的数据几乎不会改动,所以我设计的表存的直接是中文. 菜单如下: 代码如下: var url = "${basePath}/institutionConfig/getDepartmentByCenter.do?param=" + center; $.get(url, function (data) { var list = data.data; for (var i = 0; i

  • jquery ajax传递中文参数乱码问题及解决方法说明

    jQuery传递中文参数乱码,原因是默认的传递方式没有采用UTF-8,所有我们可以在传递参数的时候对参数进行编码,然后再操作,代码如下,红色的代码为传递的参数,已标注 复制代码 代码如下: smsubmitclick = function(){   $(document).ready(function(){       var name = $("#txt_name").val();       var type = $("#seltype option:selected&q

  • JS传值出现中文参数乱码的解决方法

    本文实例讲述了JS传值出现中文参数乱码的解决方法.分享给大家供大家参考,具体如下: function PopupFK(cNum,type){ var url = "contract!Paying.action"; url = url + "?contract.contractNum="+cNum+"&payingType="+type; // if(isEmpty($(_this).attr("payId"))){ /

  • 地址栏传递中文参数乱码在js里用escape转码

    乱码,乱码,头大,烦,话说设置Tomcat后可以解决,但有的时候不管用了,这时,我们可以考虑转码方式不直接传中文,在js里用escape转码,记得需要用两次,如: var str=escape("这是中文参数"); str=escape(str); xxx.do?name=str; 在后台通过一个类的方法再转回来: Escape.unescape(request.getParameter("name")); Escape类如下: 复制代码 代码如下: package

  • 动态加载iframe时get请求传递中文参数乱码解决方法

    当用户的页面需要动态加载iframe 时, 如果iframe的src中包传中文参数会出现编码错误:必须加编码,然后再解码. 编码:encodeURI(encodeURI("包含中文的串")) 解码:java.net.URLDecoder.decode("需要解码的串","utf-8"); 解决方案 使用 encodeURI('中文') 进行编码操作, js代码: 复制代码 代码如下: $(function() { $('#frame').attr

  • GET方法URL中传递中文参数乱码的解决方法

    1.在页面中对你的URL进行编码 使用------encodeURI(你要使用的中文参数值)如:...?username"+encodeURI("小甜甜") 2.在后台通过解码来接收该中文参数 使用----String name = new String(request.getParameter("username ").getBytes("iso8859-1"),"utf-8") 3.最好不要在URL中传递中文参数

  • Java向数据库插入中文出现乱码解决方案

    主要解决方向,JAVA与MYSQL中编码要统一.通常采用UTF-8. 这里虽然你在项目中设置了数据库采用UTF-8,但是那里不包括连接方式之类的. 1.查询自身MYSQL编码方式 MySQL默认编码是latin1 mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +-------------------

  • php上传文件中文文件名乱码的解决方法

    可能会有不少朋友碰到一些问题就是上传文件时如果是英文倒好原文名不会有问题,如果是中文可能就会出现乱码了,今天我来给大家总结一下导致乱码php上传文件中文文件名乱码的原因与解决办法吧. 这几天在windows下安装了XAMPP,准备初步学习一下php的相关内容.这几天接触到了php上传文件,但是出现了一个郁闷问题,我准备上传一个excel文件,但是如果文件名是中文名就会报错. 一来二去很是郁闷,后来仔细想了想应该是文件编码的问题,我写的php文件使用的是UTF-8编码,如果没有猜错APACHE处理

  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题 Linux下Mysql插入中文显示乱码解决方案 mysql -uroot -p 回车输入密码 进入mysql查看状态如下: 默认的是客户端和服务器都用了latin1,所以会乱码. 解决方案: mysql>user mydb; mysql>alter database mydb  character set utf8;! 上文提到了用临时方法更改数据库的字符集设置,显示中文,但是后来发现在有的系统下并不能成功. 比如我用的debi

随机推荐