我對JavaScript中的PHP腳本和使用jQuery庫執行AJAX請求。
這裏是我的命令執行AJAX請求:jQuery ajax + responseText +字符編碼
$.ajax({
async: "false",
cache: "false",
data: {login: strLogin, password: strPassword},
datatype: "text",
error: connexionAjaxError,
success: connexionAjaxSuccess,
type: "POST",
url: "./Connexion"
});
「.Connexion」 是一個URL重定向到我的PHP腳本。
connexionAjaxError是在收到HTTP響應後不可避免地執行的JavaScript函數。
原因是:我的PHP腳本產生的純文本/頁面的HTTP狀態代碼等於500
這是我的PHP腳本的最相關的部分:
header("HTTP/1.0 500 Internal Server Error;
Content-type: text/plain;
charset=ISO-8859-1");
echo "été";
這裏是connexionAjaxError的簽名回調函數:
function connexionAjaxError(jqXHR, textStatus, errorThrown)
我的PHP結果字符串 「ETE」。
我的PHP內部編碼是ISO-8859-1,因此結果字符串以十六進制表示法編碼[e9 74 e9]。
但connexionAjaxError回調函數中的jqXHR.responseText包含1個字符的字符串。
我已經使用JavaScript String對象的charCodeAt方法來獲取字符的Unicode(UTF-8?)代碼。
該字符以十進制表示法編碼爲65535,相當於以十六進制表示法的[ff ff]。
我不明白爲什麼jqXHR.responseText不包含3個字符的字符串「été」。
我不是JavaScript專家,但我想jqXHR.responseText只能包含以UTF-8編碼的字符串。
因此,jqXHR.responseText中的字符串「été」將以十六進制表示法編碼[c3a9 74 c3a9]。
我檢索從以下網站中的文字「E」的UTF-8編碼:http://www.utf8-chartable.de/
感謝您的回答。現在我對如何編碼JS/PHP字形串有了更好的想法。如果ISO-8859-1編碼適用於我的PHP/JS腳本,則字符串「été」以十六進制表示法編碼[e9]。但是,如果UTF-8編碼應用於我的PHP/JS腳本,則字符串「été」以十六進制表示法編碼[c3 a9]。告訴我,如果我錯了。 – user1139666 2012-03-24 14:48:40