当前位置: 首页 > 知识库问答 >
问题:

通过json请求未填充的Chartjs数据

程树
2023-03-14

我正在使用PHP和SQL生成一个数组,该数组计算具有相同值的数据,以及这些值中有多少输出json_encode到:

<代码>{“05”:4,“09”:4,“19”:4}

Chart.js文件:(向下修剪)

// Chart
var ctx = document.getElementById("monthAbuseChart");
var myLineChart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: ["1", "2", "3"],
      datasets: [{
        label: "Offences",
        //data: [0, 7, 5] This works
        data: offences // This doesn't
    }],
  }
  }
});
// Grab the data for offences:
var offences = []

  $.ajax({
    method: "POST",
    url: "sql/monthabuse.php",
    dataType : 'json',
    success: function (result) {

      //offences = result;
        var offences = result;
        console.log(result);
    },
  });

console.log输出{19:4,05:4,09:4}

但是,如果我将罪行放入数据部分data:configures,它就不起作用了?

共有1个答案

淳于健
2023-03-14

假设您希望将ajax调用的响应填充到combines变量中。当前代码有2个问题:

>

  • 创建图表的代码在AJAX调用运行之前正在运行。在您的代码中,您引用了combines变量,但它尚未填充。

    您已经将configures定义为全局变量,这是可以的。但是在AJAX调用中,您再次定义了一个新的局部变量configures,方法是在它前面加上var。您需要使用下面的代码填充全局的comficationsvar(在您的问题中有注释)。

        offences = result
    

    解决这一问题的一种方法是将图表代码包含在一个新函数中,并在AJAX的success回调中调用这个新函数。

    //Global Variable
    var offences = [];
    
    function createMonthAbuseChart() {
        var ctx = document.getElementById("monthAbuseChart");
        var myLineChart = new Chart(ctx, {
          type: 'line',
          data: {
            labels: ["1", "2", "3"],
              datasets: [{
                label: "Offences",
                //data: [0, 7, 5] This works
                data: offences // This doesn't
            }],
          }
          }
        });
    }
    
    // Grab the data for offences:
    $.ajax({
      method: "POST",
      url: "sql/monthabuse.php",
      dataType : 'json',
      success: function (result) {
          offences = result;
          console.log(result);
          createMonthAbuseChart(); //Call the Chart Create Method Here.
      },
    });
    

    您必须确保AJAX调用返回的数据具有与图表所需的数据相同的格式,即[0,7,5]。从您的问题来看,AJAX调用返回的是{19:4,05:4,09:4}。您可以使用以下代码将其转换为[4,4,4]

        offences = Object.values(result);
    

    在AJAX回调中使用上面的行而不是下面的行

        offences = result;
    

  •  类似资料:
    • 以下文件是我试图向nodejs(Express)服务器提交POST请求的过程。req.body不会从我的表单中填充任何类型的数据。我已经做了很多搜索,发现许多解决这个特殊问题的方法包括在我的路线之前移动身体解析器,并确保在表单字段中包含名称。 应用程序。js 指数玉 指数js(从app.post('/signup',…)调用) 安慰日志

    • 我正在使用CSV数据集在JMeter中生成http请求。我想生成如下所示的嵌套json:

    • 问题内容: 我有一个JSON请求,该请求从youtube返回一个响应,其中包含对特定视频的评论。我目前有3种文本视图:一种用于名称/上载器,一种用于内容,一种用于发布日期- 然后用我的JSON响应中的数据填充。 我的问题是-仅出现第一个评论,发布日期和上传者。 我相信我将需要用列表视图替换我的textviews并将其解析为3个字段-我只是不知道如何。 爪哇 公共类Player扩展了YouTubeB

    • 我试图创建一个搜索框,它基本上可以根据用户从json文件中的键值对输入自动完成。看起来使用datalist可能是最好的选择,但是当我执行下面的代码时,HTML中不会出现任何选项标记。 我对jquery和json还是相当陌生的,所以我对建议持开放态度。

    • 我试图在JQuery中创建一个函数来增加和减少点击点。我已经创建了增加点数的onclick事件,但不知道如何减少点数。 上面的函数增加点的值,当点击,为了减少它,我需要知道是否填充的区域是点击。 我查看了ChartJS文档,但没有碰到它。其他图表也有它,例如极地面积图,当你悬停一个部分时,它会高亮显示,这意味着有一个功能可以检测鼠标悬停在段上。 雷达图中是否存在类似的功能? 我的密码本。 如果不是

    • 有人能帮我解决jmeter中响应头中的错误消息吗。在一个页面中记录了blazemeter的脚本,其中包含数据填充日期,但在post请求返回响应后,我将对象移动到错误页面404。Post请求响应消息如下所示