由於XMLHTTP采用的是Unicode編碼上傳數據,而一般頁面采用的是gb2312,這就造成顯示頁面時產生亂碼。而當在獲取頁面時的XMLHttp返回的是utf-8編碼,這就造成了顯示產生亂碼。
PHP Ajax亂碼解決方法之一就是在PHP文件中顯示聲明為GB2312
header("Content-Type:text/html;charset=GB2312");
而對於發送到服務器的中文進行轉碼。
如下
$_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);
因而這樣可以解決PHP Ajax亂碼問題
方法二,是都采用UTF-8編碼。這裡就不多說了
PHP Ajax亂碼解決示例之客戶端
- < !DOCTYPE HTML PUBLIC "-//W3C//
DTD HTML 4.01 Transitional//EN">- < html>
- < head>
- < meta http-equiv="Content-Type"
content="text/html; charset=gb2312">- < title>ajax post test</title>
- < /head>
- < body>
- < div id="msg">< /div>
- < script language="javascript">
- /**
- * 初始化一個xmlhttp對象
- */
- function InitAjax()
- {
- var ajax=false;
- try {
- ajax = new ActiveXObject
("Msxml2.XMLHTTP");- } catch (e) {
- try {
- ajax = new ActiveXObject
("Microsoft.XMLHTTP");- } catch (E) {
- ajax = false;
- }
- }
- if (!ajax && typeof XMLHttp
Request!='undefined') {- ajax = new XMLHttpRequest();
- }
- return ajax;
- }
- //在form 測試頁面內有一個表單,一個顯示的層
- function sendData()
- {
- var msg=document.getElementById("msg");
- var f=document.form1;
- var c=f.content.value;
- //接收數據的URL
- var url="dispmsg.php";
- var poststr="content="+c;
- var ajax=InitAjax();
- ajax.open("POST",url,true);
- ajax.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");- ajax.send(poststr);
- ajax.onreadystatechange=function(){
- if(ajax.readyState==4 && ajax.status==200){
- alert("I got something");
- msg.innerHTML=ajax.responseText;
- }
- }
- }
- < /script>
- < form name='form1'>
- < input type="text" name='content' size=10>
- <input type="button" value="確定"
onclick="sendData()">< !--我用submit時就出錯-->- < /form>
- < /body>
- < /html>
PHP Ajax亂碼解決示例之服務器端
- < ?php
- header("Content-Type:text
/html;charset=GB2312");- if($_POST['content'])
- {
- $_POST["content"]=iconv("
UTF-8","gb2312",$_POST["content"]);- print("內容是".$_POST['content']);
- }
- else
- {
- print("沒有內容發送");
- }
- ?>
以上代碼示例就是PHP Ajax亂碼的相關解決方法,希望對又需要的朋友有所幫助。