responseJSON与responseText不同。切断最后一个数组元素

我遇到一个奇怪的问题,无法解决。

这是我所知道的:

  • responseText在Chrome的控制台中显示了3个对象 (最新版本)。 Edge和IE也是如此。
  • responseJSON仅显示2
  • console.dir(data)时,数据对象仅显示2行
  • JSON似乎是正确的,并已由jsonformatter.com确认

任何转换JSON字符串的操作都会切断最后一个记录/数组元素。

我有一个来自PHP脚本的JSON字符串:

{
   "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","last":"2020-04-18 03:13:38"}}

根据jsonformatter,上述JSON有效。

$ rows结果来自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 );

我尝试使用直接的脚本和相同的结果。

任何见识将不胜感激。

shi443213174 回答:responseJSON与responseText不同。切断最后一个数组元素

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2415517.html

大家都在问