下面小編給大家分享一篇關于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里的數據發送出去了,太爽了!!
演示地址:http://cn5.cn/ajax/ajax12.htm
客戶端代碼ajax.htm
復制代碼 代碼如下:
varoDiv
varxh
functiongetXML()
{
setcookie($('name').value,$('val').value);
oDiv=document.all.m
oDiv.innerHTML="正在裝載,請稍侯......."
oDiv.style.display=""
xh=newActiveXObject("Microsoft.XMLHTTP")
xh.onreadystatechange=getReady
xh.open("POST","a.php",false)
xh.send();
}
functiongetReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{
oDiv.innerHTML="完成"
}
else
{
oDiv.innerHTML="抱歉,裝載數據失敗。原因:"+xh.statusText
}
}
}//author:longbillwww.longbill.cn
functionsetcookie(name,value)
{
varcookiestr=name+"="+value+";";
varexpires="";
varcookieexp=60*60*1000;
vard=newDate();
d.setTime(d.getTime()+cookieexp);
expires="expires="+d.toGMTString()+";";
document.cookie=cookiestr+expires;
}
function$(a)
{
returndocument.getElementById(a);
}
?
AJAX使用cookie傳值例子:
name:
value:
服務器端代碼a.php
復制代碼 代碼如下:
header("Content-type:text/html;charset=GB2312");
echo"以下是您送出的所有COOKIE變量及其值/n";
print_r($_COOKIE);
?>
以上就是AJAX亂碼的解決方法,更多相關內容請繼續關注錯新技術頻道。
新聞熱點
疑難解答
圖片精選