跳到主要內容

發表文章

目前顯示的是有「jQuery」標籤的文章

JQuery AJAX 無法接收後端回傳值的解決...

筆者以撰寫PHP為主 慣用CodeIgniter Framework ,或單純採用Smarty 樣板引擎開發網站 筆者在網頁上,如果要使用到AJAX,首選是jQuery 若有接觸過或經常使用jQuery 的程式設計師, 應該都知道jQuery 是以UTF-8為主 筆者曾經遇過的案例是在公司內部的測試機以及本機電腦跑 各瀏覽器下瀏覽與操作,都沒有問題 移轉到客戶的測試環境下,也如預期能正常運作 但移轉到客戶的正式環境下,在IE各版本底下,$.ajax 的所有回傳全部都是 undefined 一度以為jQuery 有問題 再透過jQuery 1.4.1 (目前最新版本) 回傳的訊息比較詳細,是 c00ce56e 的錯誤訊息 經過Google大神的指導之下,原來這個訊息是「不支援指定的編碼」 再更進一步查詢才知道,原來IE不論什麼版本,頁面編碼與後端回傳的編碼必須是相同的 而c00ce56e錯誤是指頁面的編碼與後端回傳編碼不符導致 筆者覺得奇怪,前台, 後端程式都是 php 撰寫,並且header是utf-8沒有錯 甚至以為是CodeIgniter Framework作怪, 但只有客戶的正式環境會有問題 檢查了PHP的設定, 該設定的都設了,仍然是有問題 後來腦袋靈光一閃,會不會是Apache 的預設編碼與前台的編碼不同 最後的嘗試,index.php 的最開頭加上 ini_set("default_charset","utf-8"); 結果,差點沒落淚,整個就是正常沒問題了 最終的分析結果,應是APACHE的預設編碼,讓回傳的json的header是不同編碼,而導致IE底下出現如此的錯誤 所以最好的方法就是,直接在程式中加入預設編碼為UTF-8的設定,這樣應該不會再遇到什麼怪問題了