Menusuk ke dalam gelap:beberapa baris database Anda berisi karakter non-ASCII (misalnya ü, é dan semacamnya). Koneksi database Anda disetel ke latin1
, jadi datanya tidak dikodekan UTF-8. json_encode
membutuhkan data yang disandikan UTF-8. Jika Anda mengambil cukup banyak baris, akan ada baris dengan data non-UTF-8 di sana, dan json_encode
gagal. Dengan beberapa baris yang cukup, Anda tidak akan menemukan baris bermasalah tersebut.
Uji ini dengan mengeluarkan echo json_last_error_msg();
setelah json_encode
.
Setel koneksi database Anda ke UTF-8. Lihat di sini cara melakukannya:UTF-8 hingga selesai
Alasan mengapa browser Anda mengeluh tentang JSON yang tidak valid saat Anda menyertakan print_r
sederhana:karena PHP menghasilkan banyak sampah yang bukan JSON, yang tidak dapat didekodekan oleh browser sebagai JSON.