Stå in i mörkret:några av dina databasrader innehåller icke-ASCII-tecken (t.ex. ü, é och sådant). Din databasanslutning är inställd på latin1
, så data är inte UTF-8-kodad. json_encode
kräver UTF-8-kodad data. Om du hämtar tillräckligt många rader kommer det att finnas rader med sådan icke-UTF-8-data där, och json_encode
misslyckas. Med tillräckligt få rader råkar du inte träffa de problematiska raderna.
Testa detta genom att mata ut echo json_last_error_msg();
efter json_encode
.
Ställ in din databasanslutning till UTF-8. Se hur du gör det här:UTF-8 hela vägen igenom
Anledningen till att din webbläsare klagar på ogiltig JSON när du inkluderar en print_r
är enkelt:för då skickar PHP ut mycket skräp som inte är JSON, som webbläsaren inte kan avkoda som JSON.