Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ChartJS仅在放大或缩小时显示数据_Javascript_Chart.js - Fatal编程技术网

Javascript ChartJS仅在放大或缩小时显示数据

Javascript ChartJS仅在放大或缩小时显示数据,javascript,chart.js,Javascript,Chart.js,实际上,我正在使用ASP.NET和SQL Server。我正在使用ChartJS为我的网站制作图表。问题是当我在浏览器中放大或缩小时,ChartJS只显示结果 有人知道为什么吗?我正在使用AJAX从数据库中获取信息并制作动态图表 这是我的JavaScript: $(document).ready(function () { $.ajax({ type: "POST", url: "Graficas.asmx/obt

实际上,我正在使用ASP.NET和SQL Server。我正在使用ChartJS为我的网站制作图表。问题是当我在浏览器中放大或缩小时,ChartJS只显示结果

有人知道为什么吗?我正在使用AJAX从数据库中获取信息并制作动态图表

这是我的JavaScript:

        $(document).ready(function () {
        $.ajax({
            type: "POST", 
            url: "Graficas.asmx/obtenerGrafica",
            data: '',
            contentType: "application/json; charset=utf-8",
            dataType: "json", // dataType is json format
            success: function OnSuccess(response) {
                items = response.d;
                $.each(items, function (index, val) {
                    myChart.data.labels.push(val.Nombre);
                    myChart.data.datasets[0].data.push(val.Gastado);
                    nmbre.push(val.Nombre);
                    precio.push(val.Gastado);
                });
            },
            error: function onError(error) {
                console.log(error.d);
            },
        });
        var ctx = document.getElementById("myChart");
        var myChart = new Chart(ctx, {
            type: 'horizontalBar',
            data: {
                labels: [],
                datasets: [{
                    label: ['Mensual'],
                    data: [],
                    backgroundColor: [
                        'rgba(137, 107, 255, 0.3)'
                    ],
                    borderColor: [
                        'rgba(137, 107, 255, 1)',

                    ],
                    borderWidth: 1
                }
                ]
            },
            options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero: true
                        }
                    }]
                }
            }
        });           
    });

谢谢您。

初始化图表对象后,尝试调用ajax方法

$(document).ready(function () {

    var ctx = document.getElementById("myChart");
    var myChart = new Chart(ctx, {
        type: 'horizontalBar',
        data: {
            labels: [],
            datasets: [{
                label: ['Mensual'],
                data: [],
                backgroundColor: [
                    'rgba(137, 107, 255, 0.3)'
                ],
                borderColor: [
                    'rgba(137, 107, 255, 1)',

                ],
                borderWidth: 1
            }
            ]
        },
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        beginAtZero: true
                    }
                }]
            }
        }
    });  
$.ajax({
        type: "POST", 
        url: "Graficas.asmx/obtenerGrafica",
        data: '',
        contentType: "application/json; charset=utf-8",
        dataType: "json", // dataType is json format
        success: function OnSuccess(response) {
            items = response.d;
            $.each(items, function (index, val) {
                myChart.data.labels.push(val.Nombre);
                myChart.data.datasets[0].data.push(val.Gastado);
                nmbre.push(val.Nombre);
                precio.push(val.Gastado);
            });
        },
        error: function onError(error) {
            console.log(error.d);
        },
    });         
});

在ajax调用之前添加两个数组:

var nomreArr= [];
var gastadoArr= [];    
然后在success函数中填充它们 然后将它们分配给数据集

nomreArr.push(val.Nombre);
gastadoArr.push(val.Gastado);

myChart.data.datasets[0].data = gastadoArr;
myChart.data.datasets[0].labels= nomreArr;
myChart.update();
此外,您的HTML应该如下所示:


我也遇到了他同样的问题,唯一能够解决这个问题的方法是在关闭document.ready块之前添加以下内容:

setTimeout(function() {
    myChart.update();
},1000);
虽然不太理想,但这是我唯一能做的事情,让图表始终呈现出来——在1秒钟的延迟后调用“update”方法