Apuñalar en la oscuridad:algunas de las filas de su base de datos contienen caracteres que no son ASCII (por ejemplo, ü, é y similares). Su conexión a la base de datos está establecida en latin1
, por lo que los datos no están codificados en UTF-8. json_encode
requiere datos codificados en UTF-8. Si obtiene suficientes filas, habrá filas con datos que no sean UTF-8 allí y json_encode
falla Con pocas filas suficientes, no llegas a esas filas problemáticas.
Pruebe esto generando echo json_last_error_msg();
después de json_encode
.
Establezca la conexión de su base de datos en UTF-8. Vea aquí cómo hacerlo:UTF-8 hasta el final
La razón por la que su navegador se queja de JSON no válido cuando incluye un print_r
es simple:porque entonces PHP genera mucha basura que no es JSON, que el navegador no puede decodificar como JSON.