文章目錄
jquery ajax post 提交的時候,在後台request.QueryString 擷取得到的卻得到了是十六進位的亂碼用escape() 來編碼字串能解決這個問題。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Jquery/jquery-1.3.1-vsdoc.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
alert(1)
$("#sub").click(function () {
alert(0);
var filePath = $("#typeFile").val();
alert(filePath)
alert("escape" + escape(filePath))
alert("unescape"+unescape(filePath))
$.post("Default.aspx?a="+unescape(filePath)+"&path=" +escape(filePath), function (data) {
alert(data);
}, "text");
});
});
</script>
</head>
<body>
<input type="file" name="typeFile" id="typeFile" />
<input type="button" id="sub" value="提 交" />
</body>
</html>
後台:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string path = Request.QueryString["path"];
if (!string.IsNullOrEmpty(path))
{
string type= Request.QueryString["a"];
FileStream stream = File.OpenRead(path);
byte[] by = new byte[stream.Length];
stream.Read(by, 0, Convert.ToInt32(stream.Length));
string newFileName = DateTime.Now.Ticks + path.Substring(path.LastIndexOf('.'));
string savePath = Server.MapPath("UpFiles//"+newFileName);
File.WriteAllBytes(savePath, by);
Response.Write("圖片上傳成功!");
Response.End();
}
}
註:
定義和用法
unescape() 函數可對通過 escape() 編碼的字串進行解碼。
文法
unescape(string)
參數 |
描述 |
string |
必需。要解碼或反轉義的字串。 |
傳回值
string 被解碼後的一個副本。
說明
該函數的工作原理是這樣的:通過找到形式為 %xx 和 %uxxxx 的字元序列(x 表示十六進位的數字),用 Unicode 字元 /u00xx 和 /uxxxx 替換這樣的字元序列進行解碼。
定義和用法
escape() 函數可對字串進行編碼,這樣就可以在所有的電腦上讀取該字串。
文法
escape(string)
參數 |
描述 |
string |
必需。要被轉義或編碼的字串。 |
傳回值
已編碼的 string 的副本。其中某些字元被替換成了十六進位的逸出序列。
說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。其他所有的字元都會被逸出序列替換。
提示和注釋
提示:可以使用 unescape() 對 escape() 編碼的字串進行解碼。
注釋:ECMAScript v3 反對使用該方法,應用使用 decodeURI() 和 decodeURIComponent() 替代它。