首页 > 解决方案 > 为什么我在尝试访问通过 ajax 返回的 json 数据中的值时变得不确定

问题描述

data[0] 正确返回 json 数据的第 0 行,但尝试访问诸如 service 和 online 之类的键返回未定义。

 <script>
      $.ajax({
    url:"count.php",
    dataType:'json', 
    success: function(data, status){
      console.log(data[0].online);
    }
  });
    </script>

计数.php

<?php 

$data = array();

 $data[] = file_get_contents('https://xxxxxik.php?%20metod=get_count_new%20&service=pro1&apikey=sdss');
  $data[] = file_get_contents('https://xxxxxik.com/priemnik.php?%20metod=get_count_new%20&service=pro2&apikey=sdds');
  echo json_encode($data);
?>

console.log(data) 打印以下 json

[
  "{\"service\":\"pro1\",\"online\":91}",
  "{\"service\":\"pro2\",\"online\":0}"
]

标签: javascript

解决方案


该数组data包含字符串。您可以使用Array​.prototype​.map()andJSON.parse()将其转换为对象数组。

$.ajax({
   url:"count.php",
   dataType:'json', 
   success: function(data, status){
      data = data.map(x => JSON.parse(x))
      console.log(data[0].online)
   }
});

推荐阅读