У меня странная проблема, которую я не могу понять.
Вот что я знаю:
- responseText имеет 3 объекта, показанных на консоли в Chrome (последняя версия). Это также верно для Edge и IE.
- ответ JSON показывает только 2
- Объект данных показывает только 2 строки, когда console.dir (data)
- JSON кажется правильным и подтвержденным jsonformatter.com
Независимо от преобразования строки JSON обрезается последняя запись / элемент массива.
У меня есть JSON строка из PHP скрипта:
{
"rows":[
{
"fullname":"Christine B",
"ask_amount":"500"
},
{
"fullname":"John T",
"ask_amount":"700"
},
{
"fullname":"Kasia S",
"ask_amount":"350"
}
],
"stats":{
"ask_total":"6900",
"ask_count":"15",
"ask_highest":"1000.00",
"asksettings_goal":"5000",
"last":"2020-04-18 03:08:38"
}
}
Вот эта функция:
function refreshstats() {
$.ajax({
type: 'POST',
url: "functions.php",
dataType: "json",
data: {
function: "stats",
lastquery: lastquery,
key: key
},
error: function (data) {
console.dir(data)
}
}).done(function (data, textStatus, jqXHR) {
console.dir(jqXHR) //
console.dir(data.rows) // <- this shows only two records
})
}
Консоль jqXHR:
{"rows":[{"fullname":"Christine B","ask_amount":"500"},{"fullname":"John T","ask_amount":"700"},{"fullname":"Kasia S","ask_amount":"350"}],"stats":{"ask_total":"6900","ask_count":"15","ask_highest":"1000.00","asksettings_goal":"5000","last":"2020-04-18 03:13:38"}}
Согласно jsonformatter приведенное выше значение JSON является действительным.
$ набор результатов строк из числа массивов MariaDB 3 $ первый массив массива объекта askstats - результат запроса MariaDB.
PHP код:
$db = new Db();
$query = "SELECT ROUND(SUM(ask_amount),0) ask_total, COUNT(ask_id) ask_count, MAX(ask_amount) ask_highest, asksettings_goal, NOW() last FROM AskSettings ASKS LEFT JOIN Asks ASK ON ASKS.event_id = $event_id AND ASK.event_id = $event_id WHERE ask_confirmed=1";
$askstats = $db->select( $query )[0];
$db = new Db();
$query = "SELECT IF(ask_anonymous=1,'Anonymous',CONCAT(account_firstname,' ',account_lastname)) fullname, FORMAT(ask_amount,0) ask_amount FROM Asks ASK, Accounts A, AskSettings ASKS WHERE A.account_id = ASK.account_id AND ASKS.event_id = $event_id AND ASK.event_id = $event_id AND ask_timestamp >= '$lastquery' AND ask_confirmed=1 ORDER BY ask_timestamp";
$rows = $db->select( $query );
$arr = array( "rows" => $rows, "stats" => $askstats );
echo json_encode( $arr );
Я пытался использовать прямой javscript и те же результаты.
Любое понимание будет с благодарностью.