繁体   English   中英

PHP和Ajax:使用后Ajax返回错误

[英]PHP and Ajax: using post ajax return error

我有从数据库返回的数据,我正在使用chartjs在饼图上显示它们。

我希望用户选择一个特定的日期范围,当她单击过滤器时,它应该根据用户选择的日期在饼图上显示数据, 实时演示

这是我的解决方案。

的HTML

    from <input type="text" id = "firstdatepicker" name = "firstdatepicker">
      to <input type="text" id = "lastdatepicker" name = "lastdatepicker">
         <input type="button" name="filter" id="filter" value="Filter" class="btn btn-info" /> 

JS

$(document).ready(function(){

  $(function() {
    $( "#firstdatepicker" ).datepicker();
    $( "#lastdatepicker").datepicker();
  }); 

   $('#filter').click(function(){  
        var from_date =$('#firstdatepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
        var to_date =$('#lastdatepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
        if(from_date != '' && to_date != ''){

             $.ajax({  
                  url:"https://meed.audiencevideo.com/admin/chats/stats.php",  
                  type:"POST",  
                  data:{from_date:from_date, to_date:to_date},  
                  success:function(data){  
                     console.log(data);
                    var session= data[0].sessions;
                    var yes = data[0].num_yes;
                    var no =data[0].num_no;
                    var ctx = document.getElementById("myPieChart");
                     var myChart = new Chart(ctx, {
                      type: 'pie',
                      data: {
                          labels: ["sessions","yes", "no"],
                          datasets: [{
                            label: 'Genders',
                            data: [session,yes, no],
                            backgroundColor: [
                                'rgba(255, 99, 132, 0.2)',
                                'rgba(54, 162, 235, 0.2)',
                                'rgba(54, 162, 235, 1)'
                            ],
                            borderWidth: 1
                        }]
                    },           
                    });
                  },
                  error: function () {
                    console.log('Something went wrong');
                  }
             });  
        }  
        else  
        {  
             alert("Please Select Date");  
        }  
   });  
})

这是PHP从数据库中获取数据

if (isset($_POST['from_date']) && isset($_POST['to_date'])) {
  $firstDate= $_POST['from_date'];
  $lastDate= $_POST['to_date'];
  $firstDate_new = date('Y-m-d', strtotime($firstDate));
  $lastDate_new = date('Y-m-d', strtotime($lastDate));

  $query = sprintf("SELECT count(*) as num_rows, datetime, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events WHERE datetime BETWEEN '{$firstDate_new}' AND '{$lastDate_new}'");
  var_dump($query);

  $result = $mysqli->query($query);
  $data = [];
  if(mysqli_num_rows($result) > 0)  
  {  
       while($row = mysqli_fetch_array($result))  
       {  
        $data[] = $row; 
       }  
  }  

  echo json_encode($data);
  exit;

}else{

//query to get data from the table
$query = sprintf("SELECT count(*) as num_rows, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events;");
}

$result = $mysqli->query($query);

//loop through the returned data
$data = array();
foreach ($result as $row) {
  $data[] = $row;
}
//free memory associated with result
$result->close();

//close connection
$mysqli->close();

//now print the data
print json_encode($data);

当我选择日期范围并单击过滤器时,会在这样的控制台上获得所需的数据。

"SELECT count(*) as num_rows, datetime, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events WHERE datetime BETWEEN '2019-08-13' AND '2019-08-14'"


[  
   {  
      "0":"12",
      "num_rows":"12",
      "1":"2019-08-14",
      "datetime":"2019-08-14",
      "2":"12",
      "sessions":"12",
      "3":"2",
      "num_yes":"2",
      "4":"4",
      "num_no":"4"
   }
]

我从ajax得到一个错误, something is wrong 当我尝试从POST更改为GET ,显示了数据,但旧数据。

我的代码有什么问题??

用下面的代码改变你的ajax部分

$(document).ready(function(){
  $(function() {
    $( "#firstdatepicker" ).datepicker();
    $( "#lastdatepicker").datepicker();
  }); 
   $('#filter').click(function(){  
        var from_date =$('#firstdatepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
        var to_date =$('#lastdatepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
        if(from_date != '' && to_date != ''){
             $.ajax({  
                  url:"https://meed.audiencevideo.com/admin/chats/stats.php",  
                  type:"POST",
                  dataType:"json",
                  data: { 
                          from_date: from_date, 
                          to_date: to_date
                         },  
                  success:function(data){  
                     console.log(data);
                    var session= data[0].sessions;
                    var yes = data[0].num_yes;
                    var no =data[0].num_no;
                    var ctx = document.getElementById("myPieChart");
                     var myChart = new Chart(ctx, {
                      type: 'pie',
                      data: {
                          labels: ["sessions","yes", "no"],
                          datasets: [{
                            label: 'Genders',
                            data: [session,yes, no],
                            backgroundColor: [
                                'rgba(255, 99, 132, 0.2)',
                                'rgba(54, 162, 235, 0.2)',
                                'rgba(54, 162, 235, 1)'
                            ],
                            borderWidth: 1
                        }]
                    },           
                    });
                  },
                  error: function () {
                    console.log('Something went wrong');
                  }
             });  
        } else  {  
             alert("Please Select Date");  
        }  
   });  
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM