Javascript 如何将查询到的数据(通过post)放到jquery图表上?

Javascript 如何将查询到的数据(通过post)放到jquery图表上?,javascript,jquery,chart.js,Javascript,Jquery,Chart.js,我正在使用mdb引导来显示保存在数据库中的数据。我遇到的问题是,当我使用$.post时,我的饼图消失了。控制台中的错误是Uncaught SyntaxError:Unexpected identifier,它出现在var hold=1行我不熟悉javascript,在这里看不到我的错误。这是我的密码: <!-- Charts --> <script> $(document).ready(function(){ //pie var ctxP = docum

我正在使用mdb引导来显示保存在数据库中的数据。我遇到的问题是,当我使用
$.post
时,我的饼图消失了。控制台中的错误是
Uncaught SyntaxError:Unexpected identifier
,它出现在
var hold=1行我不熟悉javascript,在这里看不到我的错误。这是我的密码:

<!-- Charts -->
<script>
$(document).ready(function(){

    //pie
    var ctxP = document.getElementById("pieChart").getContext('2d');
    var myPieChart = new Chart(ctxP, {

           var hold = 1;
           var data_String;
           data_String = 'hold='+hold
           $.post('fetch/ft-invoice-breakdown.php',data_String,function(data){
                 var data = jQuery.parseJSON(data);
              });


        type: 'doughnut',
        data: {
            labels:['Pending', 'Approved', 'Paid', 'Blocked', 'Cancelled'],
            datasets: [
                {
                    data: [9, 6, 4, 1, 0],
                    backgroundColor: ["#F7464A", "#46BFBD", "#FDB45C", "#949FB1", "#4D5360"],
                    hoverBackgroundColor: ["#FF5A5E", "#5AD3D1", "#FFC870", "#A8B3C5", "#616774"]
                }
            ]
        },
        options: {
            responsive: true
        }
    });
});
</script>
我的
警报(图表数据)打印
未定义的


更新2:PHP'post'的响应是
[1,5,8,0,0]

由于
$ajax
请求被发送,除非您设置
async:false
,否则我认为您需要在收到响应后绘制图表

比如:

function drawChart(chartData){
    //pie
    var ctxP = document.getElementById("pieChart").getContext('2d');
    var myPieChart = new Chart(ctxP, {

        type: 'doughnut',
        data: {
            labels:['Pending', 'Approved', 'Paid', 'Blocked', 'Cancelled'],
            datasets: [
                {
                    data: chartData,
                    backgroundColor: ["#F7464A", "#46BFBD", "#FDB45C", "#949FB1", "#4D5360"],
                    hoverBackgroundColor: ["#FF5A5E", "#5AD3D1", "#FFC870", "#A8B3C5", "#616774"]
                }
            ]
        },
        options: {
            responsive: true
        }
    });
}
$(document).ready(function(){

    $.ajax({
    url: '../fetch/ft-invoice-breakdown.php',
    type: 'POST',
    success: function(msg){
        drawChart(msg);  //Call this method on successful data retrieval with msg as parameter 
    }
    });


});

由于
$ajax
请求被发送,除非您设置
async:false
,否则我认为您需要在收到响应后绘制图表

比如:

function drawChart(chartData){
    //pie
    var ctxP = document.getElementById("pieChart").getContext('2d');
    var myPieChart = new Chart(ctxP, {

        type: 'doughnut',
        data: {
            labels:['Pending', 'Approved', 'Paid', 'Blocked', 'Cancelled'],
            datasets: [
                {
                    data: chartData,
                    backgroundColor: ["#F7464A", "#46BFBD", "#FDB45C", "#949FB1", "#4D5360"],
                    hoverBackgroundColor: ["#FF5A5E", "#5AD3D1", "#FFC870", "#A8B3C5", "#616774"]
                }
            ]
        },
        options: {
            responsive: true
        }
    });
}
$(document).ready(function(){

    $.ajax({
    url: '../fetch/ft-invoice-breakdown.php',
    type: 'POST',
    success: function(msg){
        drawChart(msg);  //Call this method on successful data retrieval with msg as parameter 
    }
    });


});


您需要在对象外部进行第一次ajax调用,并在对象内部存储数据。然后调用一个以参数作为数据的函数并对其进行初始化…将所有代码放在一个函数中,将ajax数据对象作为参数传递,并将其放置在属性中…@AneesIjaz如何在之后将对象转换为数组?
$。ajax
是一项异步任务。您应该将代码警报()移动到
success:
wait
result@MadhanVaradhodiyil我只是在这里使用
alert()
作为调试方法。查看是否可以在ajax请求外部访问变量
chartData
。您需要在对象外部进行第一次ajax调用,并在对象内部存储数据。然后调用一个以参数作为数据的函数并对其进行初始化…将所有代码放在一个函数中,将ajax数据对象作为参数传递,并将其放置在属性中…@AneesIjaz如何在之后将对象转换为数组?
$。ajax
是一项异步任务。您应该将代码警报()移动到
success:
wait
result@MadhanVaradhodiyil我只是在这里使用
alert()
作为调试方法。看看是否可以在ajax请求之外访问变量
chartData
。这似乎几乎可以实现。但是我现在得到了
mdb.min.js:1未捕获的TypeError:Object.defineProperty调用了非Object
现在是php a
JSON
的响应,你能发布示例数据吗?响应是一个数组
[1,5,8,0,0]
。没有json,这是我的错,我应该在我的帖子中更新它,我不太清楚为什么会出现这个错误!下面是一个plunkr演示:它是否与没有包含在
标记中的代码有关?这似乎几乎可以理解。但是我现在得到了
mdb.min.js:1未捕获的TypeError:Object.defineProperty调用了非Object
现在是php a
JSON
的响应,你能发布示例数据吗?响应是一个数组
[1,5,8,0,0]
。没有json,这是我的错,我应该在我的帖子中更新它,我不太清楚为什么会出现这个错误!下面是一个plunkr演示:它是否与未包含在
标记中的代码有关?