从 AJAX 返回数组

return array from ajax

本文关键字:数组 返回 AJAX      更新时间:2023-09-26

我在Chartjs上工作,并从ajax获取json:

 var myData = [];
 $.ajax({
     method: "GET",
     cache: false,
     url: "charts/applieschart.php",
     success: function (data) {
         myData = data;
     }
 });

接下来在 2 个不同的数组上解析它们:

  var chartjsLabel = [];
     var chartjsData = [];
     for (var i = 0; i < myData.length; i++) {
         chartjsData.push(myData[i].count);
         chartjsLabel.push(myData[i].date);
     }

比我把它放在标签和数据中:

 var barChartData = {
     labels: chartjsLabel,
     datasets: [{
         fillColor: "rgba(220,280,220,0.5)",
         strokeColor: "rgba(220,220,220,1)",
         data: chartjsData
     }]
 };

看起来不错,但它不起作用。我的 json 数据如下所示:

[{"date":"12.2014","count":"62"},{"date":"11.2014","count":"58"}]

如果我用myData变量中的清除 JSON 替换 ajax:

var myData = [{"date":"12.2014","count":"62"},{"date":"11.2014","count":"58"}];

它完美地工作。我做错了什么?

您不能从ajax返回,因为它本质上是asynchronous,使用callback函数或在 ajax 成功处理程序中初始化barChartData

试试这个:

$.ajax({
  method: "GET",
  cache: false,
  url: "charts/applieschart.php",
  success: function(myData) {
    var chartjsLabel = [];
    var chartjsData = [];
    for (var i = 0; i < myData.length; i++) {
      chartjsData.push(myData[i].count);
      chartjsLabel.push(myData[i].date);
    }
    var barChartData = {
      labels: chartjsLabel,
      datasets: [{
        fillColor: "rgba(220,280,220,0.5)",
        strokeColor: "rgba(220,220,220,1)",
        data: chartjsData
      }]
    };
  }
});