一句話解決AJAX中文亂碼問題[推薦]
更新時(shí)間:2008年10月10日 21:48:27 作者:
寫了個(gè)通過一般處理程序處理的AJAX小程序 結(jié)果遇到了國(guó)內(nèi)程序員遇到的最多的問題:中文亂碼
下面是我的程序
HTML :
<!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>
<title>無標(biāo)題頁</title>
<script type="text/javascript" language="javascript">
var xmlhttp;
function createXMLHttprequest()
{
if(window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
}
function inData()
{
var txtval=document.getElementById("txt").value;
createXMLHttprequest();
xmlhttp.open("GET","request.ashx?val="+txtval,true);
xmlhttp.onreadystatechange=getData;
xmlhttp.send(null);
}
function getData()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
document.getElementById("showDT").innerHTML=xmlhttp.responseText;
}
}
}
</script>
</head>
<body>
<form id="form1" action="">
<div>請(qǐng)輸入姓名:
<input type="text" id="txt" />
<input type="button" value="提交" id="asdf" onclick="inData()" />
<span id="showDT" ></span>
</div>
</form>
</body>
</html>
request.ashx :
Code
<%@ WebHandler Language="C#" Class="request" %>
using System;
using System.Web;
public class request : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string tab ="來自服務(wù)器的信息:您好 "+context.Request.QueryString["val"].ToString()+" --by time:"+DateTime.Now.ToLongTimeString();
context.Response.Write(tab);
}
public bool IsReusable {
get {
return false;
}
}
}
baidu搜了一大堆 大致意思是 AJAX提交數(shù)據(jù)時(shí),使用的是UTF-8的編碼 并且不可以設(shè)置為其他格式
如何解決呢 最后發(fā)現(xiàn)一個(gè)JS的函數(shù)escape與unescape 用escape()對(duì)將要提交的漢字進(jìn)行編碼,會(huì)出現(xiàn)大致%10%20的字符,類似與.NET中Server.UrlEncode()與Server.UrlDecode();
將JS獲得的表單值進(jìn)行重新編碼
Code
var txtval=escape(document.getElementById("txt").value);
OK, 問題解決!
其他可能還有別的辦法至今沒遇到 希望這個(gè)辦法能幫到遇到這種困境的朋友
HTML :
復(fù)制代碼 代碼如下:
<!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>
<title>無標(biāo)題頁</title>
<script type="text/javascript" language="javascript">
var xmlhttp;
function createXMLHttprequest()
{
if(window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
}
function inData()
{
var txtval=document.getElementById("txt").value;
createXMLHttprequest();
xmlhttp.open("GET","request.ashx?val="+txtval,true);
xmlhttp.onreadystatechange=getData;
xmlhttp.send(null);
}
function getData()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
document.getElementById("showDT").innerHTML=xmlhttp.responseText;
}
}
}
</script>
</head>
<body>
<form id="form1" action="">
<div>請(qǐng)輸入姓名:
<input type="text" id="txt" />
<input type="button" value="提交" id="asdf" onclick="inData()" />
<span id="showDT" ></span>
</div>
</form>
</body>
</html>
request.ashx :
Code
復(fù)制代碼 代碼如下:
<%@ WebHandler Language="C#" Class="request" %>
using System;
using System.Web;
public class request : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string tab ="來自服務(wù)器的信息:您好 "+context.Request.QueryString["val"].ToString()+" --by time:"+DateTime.Now.ToLongTimeString();
context.Response.Write(tab);
}
public bool IsReusable {
get {
return false;
}
}
}
baidu搜了一大堆 大致意思是 AJAX提交數(shù)據(jù)時(shí),使用的是UTF-8的編碼 并且不可以設(shè)置為其他格式
如何解決呢 最后發(fā)現(xiàn)一個(gè)JS的函數(shù)escape與unescape 用escape()對(duì)將要提交的漢字進(jìn)行編碼,會(huì)出現(xiàn)大致%10%20的字符,類似與.NET中Server.UrlEncode()與Server.UrlDecode();
將JS獲得的表單值進(jìn)行重新編碼
Code
復(fù)制代碼 代碼如下:
var txtval=escape(document.getElementById("txt").value);
其他可能還有別的辦法至今沒遇到 希望這個(gè)辦法能幫到遇到這種困境的朋友
相關(guān)文章
JavaScript實(shí)現(xiàn)Ajax總結(jié)
ajax應(yīng)用非常普及,ajax的優(yōu)點(diǎn)大家都知道,具體就不多說了,其缺點(diǎn)還真不少,比如破壞瀏覽器的back功能,同一個(gè)url打開的界面并不是完全相同,還有安全性能等方面,至于有這么多的缺點(diǎn),也阻止不了大家使用ajax的步伐,下文給大家分享javascript實(shí)現(xiàn)ajax小結(jié)吧2015-10-10ajaxFileupload實(shí)現(xiàn)多文件上傳功能
這篇文章主要為大家詳細(xì)介紹了ajaxFileupload實(shí)現(xiàn)多文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Ajax實(shí)現(xiàn)靜態(tài)刷新頁面過程帶加載旋轉(zhuǎn)圖片
當(dāng)然你也可以使用jquery或者ajax寫動(dòng)態(tài)加載table的方式來實(shí)現(xiàn),方式多種多樣,感興趣的朋友可以了解下,希望本文提供的靜態(tài)刷新頁面對(duì)你學(xué)習(xí)ajax有所幫助2013-02-02Ajax 的初步實(shí)現(xiàn)(使用vscode+node.js+express框架)
這篇文章給大家介紹使用vscode+node.js+express框架操作ajax的初步實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-06-06Ajax登陸使用Spring Security緩存跳轉(zhuǎn)到登陸前的鏈接
這篇文章主要介紹了Ajax登陸使用Spring Security緩存跳轉(zhuǎn)到登陸前的鏈接,需要的朋友可以參考下2019-04-04空格或者空白字符導(dǎo)致$.ajax()報(bào)parseerror錯(cuò)誤小結(jié)
這篇文章主要介紹了空格或者空白字符導(dǎo)致$.ajax()報(bào)parseerror錯(cuò)誤,需要的朋友可以參考下2014-04-04快速解決ajax傳遞為空但顯示在頁面上為undefined的問題
今天小編就為大家分享一篇快速解決ajax傳遞為空但顯示在頁面上為undefined的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08