javascript中如何實現參數的傳遞?相信這是讓開發人員很頭痛的問題,因為參數不同實現的頁面可能是不一樣的,下面就讓錯新技術頻道小編一起來了解JavaScript通過URL傳遞漢字的實現方法吧!
利用JavaScript通過URL方式向后臺代碼傳值是一種經常用到的手段,但在傳遞漢字時經常會出現字符不全或變成亂碼的問題,其原因是由于客戶端IE瀏覽器的編碼方式為GB2312(簡體中文版WINDOWS的默認設置),而后臺的C#代碼使用utf8編碼(創建WEB工程的默認配置)。
網上有很多方案解決該問題,如將web.config的編碼方式改為GB2312、在客戶端通過escape先編碼再傳,個心體會都不是很理想或有些特殊字符不支持。經過比較我決定使用encodeURIComponent在客戶端進行編碼,再傳值,除了“/”不支持(但實際開發中很少需要傳遞該值,如果真有此請況,再加一層判斷即可。
encodeURIComponent的幫助文檔如下:
encodeURIComponent?方法
將文本字符串編碼為一個統一資源標識符?(URI)?的一個有效組件。
encodeURIComponent(?encodedURIString?)?
必選的?encodedURIString?參數代表一個已編碼的?URI?組件。
說明
encodeURIComponent?方法返回一個已編碼的?URI。如果您將編碼結果傳遞給?decodeURIComponent?,那么將返回初始的字符串。因為encodeURIComponent?方法對所有的字符編碼,請注意,如果該字符串代表一個路徑,例如?/folder1/folder2/default.html?,其中的斜杠也將被編碼。這樣一來,當該編碼結果被作為請求發送到?web?服務器時將是無效的。如果字符串中包含不止一個?URI?組件,請使用?encodeURI?方法進行編碼。
要求
版本?5.5
請參閱
decodeURI?方法?|?decodeURIComponent?方法
應用于:?Global?對象
我做了一個小例子來展現該效果??
Default.aspx代碼:
?
<%@?Page?Language="C#"?AutoEventWireup="true"??CodeFile="Default.aspx.cs"?Inherits="_Default"?%>?
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">?
<html?xmlns="http://www.w3.org/1999/xhtml"?>?
<head?runat="server">?
????<title>無標題頁</title>?
</head>?
<script?type="text/javascript"?language="javascript">?
????function?callURL(Value1,?Value2)?
????{?
????????document.URL?=?"Default.aspx?Value1="?+?encodeURIComponent(Value1)?+?"&Value2="?+?encodeURIComponent(Value2);?
????}?
</script>?
<body>?
????<form?id="form1"?runat="server">?
????<div>?
????????Value1=<input?id="Text1"?type="text"?value="1234567890"/><br?/>?
????????Value2=<input?id="Text2"?type="text"?value="中華人民共和國"/>?
????????<br?/>?
????????<input?id="Button1"?type="button"?value="提交"?onclick="callURL(Text1.value,?Text2.value)"/></div>?
????</form>?
</body>?
</html>?
?
Default.aspx.cs代碼:
?
?
?
using?System;?
using?System.Data;?
using?System.Configuration;?
using?System.Web;?
using?System.Web.Security;?
using?System.Web.UI;?
using?System.Web.UI.WebControls;?
using?System.Web.UI.WebControls.WebParts;?
using?System.Web.UI.HtmlControls;?
public?partial?class?_Default?:?System.Web.UI.Page??
{?
????protected?void?Page_Load(object?sender,?EventArgs?e)?
????{?
????????string?tmpValue1?=?"";?
????????string?tmpValue2?=?"";?
????????if?(Request.QueryString["Value1"]?!=?null)?
????????{?
????????????tmpValue1?=?Request.QueryString["Value1"].ToString();?
????????}?
????????if?(Request.QueryString["Value2"]?!=?null)?
????????{?
????????????tmpValue2?=?Request.QueryString["Value2"].ToString();?
????????}?
????????Response.Write("Value1="?+?tmpValue1?+?"<br?/>"?+?"Value2="??+?tmpValue2);?
????}?
}
以上就是關于JavaScript通過URL傳遞漢字的實現方法,相信認真看完的朋友都已經知道JavaScript的參數,我們還有更多的專業資訊,如果你想了解更多,記得關注我們的網站哦!?