Скорее всего, ваш запрос не выполнен.Либо из-за синтаксических ошибок, либо просто из-за несоответствия.Повторите код, чтобы он выглядел примерно так:
$sql = "...";
$result = mysql_query($sql) or die(mysql_error());
$data = array();
while($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
echo json_encode($data);
Часть or die
будет обрабатывать случай, когда запрос плохой и вызывает ошибку.установка $ data в пустой массив изначально гарантирует, что вы получите что-то из json_encode, даже если это просто пустой массив javascript.И тогда цикл while высасывает результаты запроса и помещает их в массив $ data.