Ajax到PHP返回每个项目类别的计数

时间:2017-06-11 02:11:21

标签: php mysql ajax

我有5种不同类别的商品。我需要获取类别中每个项目的计数并更新页面上的计数。我正在对PHP函数进行AJAX调用,该函数从MySQL表中获取数据。我可以接近但不能完全开始工作。

AJAX:

$(function(){
  $.ajax({
    url : '/getItemList.php',
    type : 'GET',
    dataType: 'json',
    success : function(data) {
      $(data ).each(function( key, value ) {
        console.log( key + ": " + value);
      });
    },
    error : function(request,error)
    {
      console.log(request);
    }
  });
})

PHP:

<?php
  try {    
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $conn->prepare("SELECT itemType, count(*) from `Items` group by itemType");
        $stmt->execute();
        $results=$stmt->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($results);
  }
  catch(PDOException $e)
  {
     $errorMessage =  "Sorry, something webt wrong";
  }
  $conn = null;
?>

输出:

  

0:[object Object]
   1:[对象]
   2:[对象对象]

我希望更多:

  

“itemCategoryOne”:3
    “itemCategoryTwo”:12
    “itemCategoryThree”:3

上面[object object]中存储的是什么。

2 个答案:

答案 0 :(得分:0)

首先成功回调ajax请求,您需要解析数据。 例如:JSON.parse(数据)。然后你可以在解析的项目上使用每个函数。

答案 1 :(得分:0)

fetchAll返回结果数组,其中键是列名,值是行的值。所以你应该把它转换成你想要的:

注意:对于PDO中的获取count(*),需要使用别名count(*)

<?php
  try {    
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $conn->prepare("SELECT itemType, count(*) as count from `Items` group by itemType");
        $stmt->execute();
        $results=$stmt->fetchAll(PDO::FETCH_ASSOC);

        $response_array = array();
        foreach($results as $result)  {
            $response_array[$result['itemType']] = $result['count'];
        }

        echo json_encode($response_array);
  }
  catch(PDOException $e)
  {
     $errorMessage =  "Sorry, something webt wrong";
  }
  $conn = null;
?>