prototype 中文參數(shù)亂碼解決方案
更新時(shí)間:2009年11月09日 18:20:17 作者:
在使用portotype,調(diào)用ajax方法時(shí)出現(xiàn)亂碼,下面是解決方法需要的朋友可以參考下。
在使用portotype,調(diào)用ajax方法時(shí)出現(xiàn)亂碼,此時(shí),獲取頁(yè)面中加入
可以試試;; 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;
}
在調(diào)用時(shí),加上encoding: 'gb2312'
var myAjax = new Ajax.Updater(
"dvContent",
url,
{
method: 'get',
parameters: pars,
encoding: 'gb2312'
});
另外還有一種方案;無(wú)論web.config中是否是"gb2312",都可以奏效。
因?yàn)榫W(wǎng)站編碼是gb2312。在使用prototype的ajax時(shí)遇到中文參數(shù)亂碼的問(wèn)題。
方法如下;
1.將參數(shù)用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"];//接受中文
給出一個(gè)完整的調(diào)用示例,
/**//*
Ajax企業(yè)名稱是否存在檢查
*/
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="提交我的企業(yè)信息";
$(objBtnSubmit).disabled=false;
alert("企業(yè)驗(yàn)證通過(guò),您可以繼續(xù)下一步操作");
}
else
{
$(objBtnSubmit).value="請(qǐng)先確認(rèn)您的企業(yè)信息是否已存在本網(wǎng)中";
if(window.confirm('此企業(yè)已存在,想獲得該公司管理權(quán)限,點(diǎn)擊“確定”,了解詳情!!\r\n如果不能打開(kāi)窗口,請(qǐng)檢查并取消您所用瀏覽器的“彈出窗口攔截”功能。\r\n或在瀏覽器地欄中輸入以下地址\r\nhttp://www.dhdzp.com/ZhengMing.aspx'))
window.open ('http://www.dhdzp.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"]);
可以試試;; Page.Response.Charset = "gb2312";
如果不奏效,有人提供另外解決方案:
復(fù)制代碼 代碼如下:
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;
}
在調(diào)用時(shí),加上encoding: 'gb2312'
復(fù)制代碼 代碼如下:
var myAjax = new Ajax.Updater(
"dvContent",
url,
{
method: 'get',
parameters: pars,
encoding: 'gb2312'
});
另外還有一種方案;無(wú)論web.config中是否是"gb2312",都可以奏效。
因?yàn)榫W(wǎng)站編碼是gb2312。在使用prototype的ajax時(shí)遇到中文參數(shù)亂碼的問(wèn)題。
方法如下;
1.將參數(shù)用encodeURI()編碼
復(fù)制代碼 代碼如下:
var par;
par="param1="+"中文值"+"¶m2="+"其他值";
var url="server.aspx";
var myAjx=new Ajax.Request(url,{method: get',parameters: encodeURI(par) ,onComplete: submit});
2.接受端代碼
復(fù)制代碼 代碼如下:
NameValueCollection nvc= HttpUtility.ParseQueryString(Request.Url.Query, Encoding.UTF8);
string title = (nvc["param1"] == null) ? "" : nvc["param1"];//接受中文
給出一個(gè)完整的調(diào)用示例,
復(fù)制代碼 代碼如下:
/**//*
Ajax企業(yè)名稱是否存在檢查
*/
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="提交我的企業(yè)信息";
$(objBtnSubmit).disabled=false;
alert("企業(yè)驗(yàn)證通過(guò),您可以繼續(xù)下一步操作");
}
else
{
$(objBtnSubmit).value="請(qǐng)先確認(rèn)您的企業(yè)信息是否已存在本網(wǎng)中";
if(window.confirm('此企業(yè)已存在,想獲得該公司管理權(quán)限,點(diǎn)擊“確定”,了解詳情!!\r\n如果不能打開(kāi)窗口,請(qǐng)檢查并取消您所用瀏覽器的“彈出窗口攔截”功能。\r\n或在瀏覽器地欄中輸入以下地址\r\nhttp://www.dhdzp.com/ZhengMing.aspx'))
window.open ('http://www.dhdzp.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
復(fù)制代碼 代碼如下:
//Page.Response.Charset = "gb2312";
NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(Request.Url.Query, Encoding.UTF8);
Name=SQLParser.StringParse(nvc["name"]);
相關(guān)文章
prototype 源碼中文說(shuō)明之 prototype.js
prototype 源碼中文說(shuō)明之 prototype.js...2006-09-09
Prototype Class對(duì)象學(xué)習(xí)
Prototype’s object for class-based OOP.prototype OOP編程的基礎(chǔ),詳細(xì)說(shuō)明一下源碼2009-07-07
Prototype 學(xué)習(xí) Prototype對(duì)象
Prototype 學(xué)習(xí) Prototype對(duì)象2009-07-07
Prototype 學(xué)習(xí) 工具函數(shù)學(xué)習(xí)($A方法)
Prototype 學(xué)習(xí) 工具函數(shù)學(xué)習(xí)($A使用方法)2009-07-07
Prototype String對(duì)象 學(xué)習(xí)
這個(gè)對(duì)象里面的方法就是提供了一些字符串操作的工具方法,比較重要的gsub方法,下面做了詳細(xì)的注釋,簡(jiǎn)單的方法就不說(shuō)了,一看就明白了。2009-07-07
初學(xué)prototype,發(fā)個(gè)JS接受URL參數(shù)的代碼
初學(xué)prototype,發(fā)個(gè)JS接受URL參數(shù)的代碼...2006-09-09
Prototype源碼淺析 String部分(一)之有關(guān)indexOf優(yōu)化
Prototype源碼淺析 String部分(一)之有關(guān)indexOf優(yōu)化介紹,需要的朋友可以參考下。2012-01-01
Prototype ObjectRange對(duì)象學(xué)習(xí)
ObjectRange對(duì)象基本就是實(shí)現(xiàn)了連續(xù)的數(shù)字或者字符串,其中只包含一個(gè)方法,include,判斷某個(gè)數(shù)字或者字符串是否在ObjectRange里。并且ObjectRange對(duì)象還混入了Enumerable的方法,所以可以直接在ObjectRange對(duì)象上調(diào)用Enumerable對(duì)象里面的方法。2009-07-07

