1.注意幾個編碼地方
1.1表單所在的網頁的:meta
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1.2XMLHTTPRequest GET的編碼
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
此處設置不對!responseText會返回empty(沒有內容),如果您有FireFox并裝有FireBug組件的話,點擊狀態欄的綠色箭頭打開控件面板(非OS的,FireBug的),選中Console會看到Response選項是:
Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ’=
當然如果是連接數據庫的話也可能跟下面的(1.4)有關系.
1.3ajax GET請求的頁面(.php)header
header("Content-Type:text/html;charset=UTF-8");
1.4數據連接的編碼
mysql_query("SET CHARACTER SET UTF8");
如果你的數據庫是GBK的或其它的字符集,為了統一編碼還要與以上三個統一起來.下面我的示例用的數據庫也是GBK,從昨天開始我一起把它設成:
mysql_query("SET CHARACTER SET GBK");
可還是有時發現會返回空(empty 我用的是ResponseText),千萬不要寫成UTF-8噢,數據庫的字符集是沒有中間的"-"
2.如果還是返回空或無效的值
例如:
a.html中有表單,a用XMLHTTPRequest和b.php通訊.
首先要保證b.php可以正確運行,例b.php?param=value打印出來的是你期望的值
如果a.html打印b.php返回的結果(ajax)與上面的(單獨運行b.php)執行結果有出入.可以刪除b.php中的空行試試!我想應該不會出現這種情況,但我有幾次作demo刪除后和刪除前確實有出入
3.下面是朋友發給我的一個示例!我修改完的源碼
表單頁:
新聞熱點
疑難解答
圖片精選