从JSON编码中获得控制台中未定义的对象

Getting undefined objects in Console from JSON encode

本文关键字:未定义 对象 控制台 JSON 编码      更新时间:2023-09-26

我一直在JSON文件中的一些对象得到未定义的消息,即使它们不是空的。可以解析并正常工作的对象包括model_no、likes、dislike、average_min、average_max和average_users。但其他对象,如user_id,ulike_type,uaverage_min等显示未定义在Chrome控制台,即使他们在文件中有值。谁能告诉我JSON编码有什么问题?

这是我的ajax代码:
   var number = $('input').map(function(){
         return $(this).attr('rel')
   }).get();
   $.ajax({
     url: "file.php",
     type: "POST",
     dataType:"JSON",
     data:{'group[]':number},
     success: function (data) {
          var item_html = "",
          $.each(data, function(i,item){
            console.log(item.dislikes);  // this one shows value
            console.log(item.users_id);  // undefined
            console.log(item.min) // undefined
            console.log(item.max) // undefined
         })

     }
});
PHP文件:

<?php
if($_POST['group'])
{
  header("Content-Type: application/json");
  $callback = $_GET['callback'];
  require_once 'config.php';
  try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$databasename", $username, $password);    
    $id_group = $_POST["group"];
    $in  = str_repeat('?,', count($id_group) - 1) . '?';    
$sql = "
SELECT * FROM 
(
   SELECT COUNT( c.app_id ) AS users_no, ROUND( AVG( c.min ) , 1 ) AS avg_min, ROUND( AVG( c.max ) , 1 ) AS avg_max, a.mid, a.likes, a.dislikes, b.model_no
        FROM  `likes_total` a
        RIGHT JOIN  `product_info` b ON a.mid = b.mid
        LEFT JOIN  `resale` c ON c.mid = b.mid
        WHERE b.model_no IN ($in)
        GROUP BY b.model_no
)TAB1
JOIN
(
   SELECT a.app_id,b.model_no,c.isbooked,d.min,d.max,e.like_type
     FROM `users_info` a
     JOIN `product_info` b
       ON b.model_no IN ($in)
LEFT JOIN `bookmarked` c 
       ON c.app_id = a.id
      AND c.mid = b.mid         
LEFT JOIN `resale` d 
       ON d.app_id = a.id
      AND d.mid = b.mid 
LEFT JOIN `likes_count` e
       ON e.app_id = a.id
      AND e.mid = b.mid
    WHERE a.app_id = ?
)TAB2
ON TAB1.model_no = TAB2.model_no
";
    $users = $dbh->prepare($sql);
    $i = 1;
    foreach ($id_group as $id) {
      $users->bindValue($i++, $id);
    }
    $results = array_merge($id_group,$id_group);  
    $lasti = (count($results) + 1);
    $user_id = $_SESSION["user_id"];
    $users->bindValue($lasti,$user_id);
    $mergearray = array_merge($results,array($user_id));
    $users->execute($mergearray);
    $datas = array();
    $rows = $users->fetchAll(PDO::FETCH_ASSOC);
    foreach($rows as $row ) 
    {
      $data = array(
          "user_id"=> $row["app_id"],
          "ulike_type"=> $row["like_type"],
          "uaverage_min"=> $row["min"],
          "uaverage_max"=> $row["max"],
          "ufav"=> $row["isbooked"],
          "model_no"=> $row["model_no"],
          "likes"=> $row["likes"],
          "dislikes"=>$row["dislikes"],
          "average_min"=> $row["avg_min"],
          "average_max"=> $row["avg_max"],
          "average_users"=> $row["users_no"],
      );
      $datas[] = $data;
    }
     echo ($callback ? $callback . '(' : '') . json_encode($datas) . ($callback ? ')' : '');
    $dbh = null;
  }
  catch(PDOException $e) 
  {
    echo $e->getMessage(); 
  }
} 
?>

JSON输出示例:

[
  {
    "user_id": "111",
    "ulike_type": null,
    "uaverage_min": null,
    "uaverage_max": null,
    "ufav": null,
    "model_no": "AAAA",
    "likes": "0",
    "dislikes": "0",
    "average_min": null,
    "average_max": null,
    "average_users": "0"
  },
  {
    "user_id": "222",
    "ulike_type": "0",
    "uaverage_min": "398",
    "uaverage_max": "823",
    "ufav": null,
    "model_no": "BBB",
    "likes": "0",
    "dislikes": "1",
    "average_min": "398.0",
    "average_max": "823.0",
    "average_users": "1"
  }
]
Print_r($data)的输出
Array
(
    [0] => Array
        (
            [user_id] => 111
            [ulike_type] => 
            [uaverage_min] => 
            [uaverage_max] => 
            [ufav] => 
            [model_no] => AAAA
            [likes] => 0
            [dislikes] => 0
            [average_min] => 
            [average_max] => 
            [average_users] => 0
        )
    [1] => Array
        (
            [user_id] => 222
            [ulike_type] => 0
            [uaverage_min] => 398
            [uaverage_max] => 823
            [ufav] => 
            [model_no] => BBB
            [likes] => 0
            [dislikes] => 1
            [average_min] => 398.0
            [average_max] => 823.0
            [average_users] => 1
        )
)

您定义它为average_users

键值对的边是右旁边的名称。

item.users_id应为item.user_id, item.min应为item.average_min, item.max应为item.average_max

在Javascript中你有:

item.users_id

JSON中有:

"user_id": "111"

(user, not users)