我有一个使用 jQuery 编写的 ajax 脚本,调用一个 php 脚本,该脚本应该在 DB 选择后返回一个 JSON 字符串。但是,php 脚本会返回 JSON 字符串,后跟 html 结束标记。该页面不输出任何其他内容(仅显示脚本中的打印命令)。我找不到该标签的添加位置。我的服务器(运行 PHP5.4)设置为前置和附加文件,但是我已经覆盖了它。作为一种解决方法,我正在使用 exit() 中止任何其他输出。JSON 正在正确构建,我可以直接转到 php 脚本并仅查看字符串,但会自动将其包装在正确的 html 和 body 标记中。调用 exit() 后,我可以正确使用 JSON。但是,出于对更简洁代码的兴趣,我想为将来的开发解决这个问题。
jq.info.js 片段:
function getCharInfo(chars_id){
$.ajax('/editor/jquery_info.php',{
data: {'chars_id': chars_id, 'qtype':'charsInfo' },
dataType: 'json',
cache: false,
jquery_info.php 片段:
foreach($chobj->char as $key=>$char){
$charInfo[$key] = parse_syn($char, 1);
}
$charInfo = json_encode($charInfo, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
print($charInfo);
exit;
parse_syn 函数只是简单地将 html 实体替换为 UTF-8 等效项(即 '&rquo;' 到 '、'--' 到 '-' 等)。任何与 PHP 设置有关的见解或设置将不胜感激。