DB選択後にJSON文字列を返すはずのphpスクリプトを呼び出すjQueryを使用して書かれたajaxスクリプトがあります。ただし、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のセットアップで調べる洞察や設定をいただければ幸いです。