我有以下的PHP腳本由AJAX調用:AJAX請求返回Unicode字符爲問號
<?php
// file /ajax/loopback.php
$fp = fopen("php://input","r");
$pdt = "";
while(!feof($fp)) $pdt .= fgets($fp);
fclose($fp);
$_POST = json_decode($pdt,true);
if(!$_POST) $_POST = Array();
var_dump($_POST);
exit;
?>
然後我把這個腳本以下JavaScript:
AJAX = function(url,data,callback) {
var a = new XMLHttpRequest();
if(data) {
data = JSON.stringify(data);
}
a.open("POST","/ajax/"+url,true);
a.onreadystatechange = function() {
if(a.readyState == 4) {
if(a.status == 200) {
callback(JSON.parse(a.responseText));
}
}
};
a.setRequestHeader("Content-Type","application/json");
a.send(data);
};
AJAX("loopback.php",{name:'ヴィックサ'},alert);
預期的結果是一個警告框包含:
Array(1) {
["name"]=>
string(5) "ヴィックサ"
}
(或者由於多字節字符,也許是「字符串(10)」) 但我得到的結果是:
Array(1) {
["name"]=>
string(5) "?????"
}
我缺少什麼,讓Unicode字符通過AJAX傳遞?
編輯:我添加一些代碼來告訴我的原崗位數據是什麼,它似乎像?????
是那裏的原始數據後,即。 Unicode甚至沒有把它送到服務器。
你tryed函數utf8_encode? – 2012-01-08 02:43:51
是的,我嘗試過和沒有。它沒有任何區別,但... – 2012-01-08 02:45:26
如果您直接調用文件而不使用AJAX,它會輸出相同的問號嗎? – 2012-01-08 04:16:16