暗闇に突き刺さる:データベースの行の一部に非ASCII文字が含まれています(例:ü、éなど)。データベース接続がlatin1
に設定されています 、したがって、データはUTF-8でエンコードされていません。 json_encode
UTF-8でエンコードされたデータが必要です。十分な行をフェッチすると、そのような非UTF-8データを含む行があり、json_encode
失敗します。行が十分に少ないと、問題のある行にヒットしなくなります。
echo json_last_error_msg();
を出力してこれをテストします json_encode
の後 。
データベース接続をUTF-8に設定します。 その方法については、こちらをご覧ください:UTF-8全体
print_r
を含めると、ブラウザが無効なJSONについて文句を言う理由 単純です。PHPはJSONではない大量のガベージを出力するため、ブラウザーはJSONとしてデコードできません。