DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX基礎知識 >> AJAX中文亂碼解決新方法分享
AJAX中文亂碼解決新方法分享
編輯:AJAX基礎知識     

用過AJAX的朋友肯定知道javascript是使用UTF-8國際編碼,即每個漢字用3個字節來存儲,但是這就造成了用AJAX來send數據的時候出現亂碼。 
   有一種解決辦法就是使用encodeURIComponent加上修改 Content-Type 為 application/x-www-form-urlencoded" 來把數據統一編碼成 url 格式,但是這樣做有一個弊端,使用php的urldecode根本不能得到正確的文字。 
   另一種方法就是通過vbscript 的寫的函數把數據轉成gb2312格式的,我個人覺得這種方法比較好。有興趣的朋友可以到網上去查一下。 
   今天突發奇想,AJAX調用的時候會不會發送cookie 呢?馬上寫了一個程序測試一下,果然能,這樣就可以在調用ajax之前,先把數據通過javascript寫到cookie裡,然後再send就可以將cookie裡的數據發送出去了,太爽了!! 

客戶端代碼 ajax.htm 

復制代碼 代碼如下:
<title>AJAX使用cookie傳值例子</title>  
<script>  
var oDiv         
var xh                
function getXML()  
{  
    setcookie($('name').value,$('val').value);  
    oDiv = document.all.m  
    oDiv.innerHTML = "正在裝載,請稍侯......."  
    oDiv.style.display= ""  
    xh = new ActiveXObject("Microsoft.XMLHTTP")  
    xh.onreadystatechange = getReady  
    xh.open("POST","a.php",false)  
    xh.send();  
}  

function getReady()  
{  
    if(xh.readyState==4)  
    {  
        if(xh.status==200)  
        {  
            oDiv.innerHTML = "完成"  
        }  
        else  
        {  
             oDiv.innerHTML = "抱歉,裝載數據失敗。原因:" + xh.statusText  
        }  
  }  
} //author : longbill      www.longbill.cn  

function setcookie(name,value)  
{  
    var cookiestr=name+"="+value+";";  
    var expires = "";  
    var cookieexp=60*60*1000;  
    var d = new Date();  
    d.setTime( d.getTime() + cookieexp);  
    expires = "expires=" + d.toGMTString()+";";  
    document.cookie = cookiestr+ expires;  
}  
function $(a)  
{  
    return document.getElementById(a);  
}  
</script>  

<body>  
AJAX使用cookie傳值例子:<br>  
<form name=myform>  
name:<input id=name  value="變量名甚至可以是中文" size=20><br>  
value:<input type=text size=20 id=val value=這裡><br>  
<input onclick="getXML()" type="button" value="送出數據">  
<input onclick="if(xh && xh.responseText) {alert(xh.responseText);}" type="button" value="顯示返回結果"><br>  
<div id=m bgcolor=blue>在此顯示狀態</div>  
<input type=button onclick="alert(document.cookie)" value=顯示本地COOKIE>  
</form>

服務器端代碼 a.php 

復制代碼 代碼如下:
<?  
header("Content-type: text/html;charset=GB2312");  
echo "以下是您送出的所有COOKIE變量及其值\n";  
print_r($_COOKIE);  
?>

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved