1

好的,我已经阅读了几乎所有关于 ajax、php 和我能找到的所有内容的帖子。我想做的是

获取我从数据库中提取的数组并将其放入 chart.js 脚本中。我知道在萤火虫中检查数据后我正确地提取了数据。它通过标题就好了。我的问题是,一旦我把它拿回来,我想要 a) 将它放入一个变量中,或者 2) 只是替换 chart.js 脚本中的数据集。

我将粘贴脚本并提供尽可能多的指导。

var cigarData = $.ajax({
    data: {cigar: sCigar, calc: "cigar"},
type: "POST",
url: "http://www.blah",
dataType:"json",
async: false,
success:function(data) {
// This outputs the result of the ajax request
   console.log(data);

     }


}).responseText;    





                  var radarChartData = {
                    labels : ["Caramel","Creamy","Earthy","Floral","Fruity","Spicy","Sweet","Woody"],
                    datasets : [
                        {
                            fillColor : "rgba(228,154,7,0.5)",
                            strokeColor : "rgba(228,154,7,1)",
                            pointColor : "rgba(228,154,7,1)",
                            pointStrokeColor : "#fff",
                            data : [cigarData]//Where I want the data to be 
                        }

                        ] 

任何帮助都会很棒。我很感激大家。我会在上午回来回答任何出现的问题。

我已经用下面的答案编辑了我的代码:

          $('#cigar').change(function (event) {


                var sCigar = $("#cigar").val();

                var cigarData = $.ajax({
                data: {cigar: sCigar, calc: "cigar"},
                type: "POST",
                url: "http://www.blah.com",
                dataType:"json",
                async: false,
                success:function(data) {

                //update chart here
                updateChartData(data);

                 }


                }).responseText;    



    //wrap chart refresh code as function

    function  updateChartData(data){

           var cigarData=data;

              var radarChartData = {
                labels : ["Caramel","Creamy","Earthy","Floral","Fruity","Spicy","Sweet","Woody"],
                datasets : [
                    {
                        fillColor : "rgba(228,154,7,0.5)",
                        strokeColor : "rgba(228,154,7,1)",
                        pointColor : "rgba(228,154,7,1)",
                        pointStrokeColor : "#fff",
                        data : [cigarData]  //Where I want the data to be 
                    }

                    ] 


              }

              };

                var myRadar = new Chart(document.getElementById("cigarCanvas").getContext("2d")).Radar(radarChartData,{scaleShowLabels : false, pointLabelFontSize : 10});


            });                                            

            });

现在每次都重新绘制地图,但数据点没有改变。就像它不断地将相同的数据集拉到地图中一样。我正在查看标题,每次更改选择时它都会传递不同的信息,但它没有将其放入 [cigarData]。这里有什么我完全想念的吗?var myRadar 是否需要在它上面的函数中才能正确提取数据?我只是不确定每个功能需要在哪里正确地通过它们传递信息的确切布局。感谢您迄今为止的所有帮助,你们太棒了。

4

1 回答 1

1

Ajax 调用是异步的,这意味着回调是在从服务器接收到响应后执行的,而不是按照编写代码的顺序执行的。

这应该是正确的做法。

var cigarData = $.ajax({
    data: {cigar: sCigar, calc: "cigar"},
type: "POST",
url: "http://www.blah",
dataType:"json",
async: false,
success:function(data) {

//update chart here
updateChartData(data);

 }


}).responseText;    



        //wrap chart refresh code as function

        function  updateChartData(data){

               var cigarData=data;

                  var radarChartData = {
                    labels : ["Caramel","Creamy","Earthy","Floral","Fruity","Spicy","Sweet","Woody"],
                    datasets : [
                        {
                            fillColor : "rgba(228,154,7,0.5)",
                            strokeColor : "rgba(228,154,7,1)",
                            pointColor : "rgba(228,154,7,1)",
                            pointStrokeColor : "#fff",
                            data : [cigarData]  //Where I want the data to be 
                        }

                        ] 


          }
于 2013-09-14T04:01:39.257 回答