暗闇に突き刺さる:データベースの行の一部に非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としてデコードできません。