Формирую json
include ('config.php');
$STH = $DBH->query('
SELECT
date,
new_users_count
FROM
H
WHERE
date BETWEEN "2018-10-01" AND "2018-10-19"');
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) {
$data= json_encode(
array(
'date'=>$row['date'],
'new_users_count'=>$row['new_users_count']
)
);
echo $data;
}
если напрямую зайти на этот php выдно что данные в json формате
затем пытаюсь получить
$.ajax({
type: "POST",
dataType:'json',
url: "serverscript/output.php",
success: function(json) {
console.log(json);
},
error: function() {
console.log("ERROR", this);
}
});
Выдает ошибку
error:function()
arguments:null
caller:null
length:0
name:""
Вы не отменяете стандартную отправку формы на сервер. Страница перегружается до того, как приходит ответ на ajax-запрос. Поэтому в консоли пусто.
Хорошо, добавьте в вызов ajax-a обработчик ошибок:
$.ajax({
type: "POST",
dataType:'json',
url: "serverscript/output.php",
success: function(json) {
console.log(json);
},
error: function() {
console.log("ERROR", this);
}
});
А-а-а. Стоп. Все понятно.
Вы выводите в цикле куски JSON-a, но, склеенные вместе в ответе на запрос, они не являются правильным JSON-ом. Соберите сначала все данные, которые надо вернуть, в массив, а потом, после цикла, обработайте их json_encode-ом перед вызовом echo.
Кстати, год назад Вы уже сталкивались с этой проблемой:
Вывод ajax json
Сборка персонального компьютера от Artline: умный выбор для современных пользователей