【发布时间】:2012-02-05 04:38:19
【问题描述】:
我有以下被 AJAX 调用的 PHP 脚本:
<?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) "?????"
}
允许通过 AJAX 传递 Unicode 字符我缺少什么?
编辑:我添加了一些代码来向我展示原始帖子数据是什么,看起来????? 似乎存在于原始帖子数据中,即。 Unicode 甚至没有进入服务器。
【问题讨论】:
-
是的,我试过有没有。不过没关系……
-
如果不使用 AJAX 直接调用文件,输出是否相同 - 问号?
-
如果我尝试通过
form提交该数据,则生成的字符串长度为 40 个字符,一组五个 HTML 实体 (&#_____;)
标签: php javascript ajax json unicode