即使ajax返回正确的输入,jqPlot也不会显示ajax数据

时间:2017-06-15 12:56:45

标签: jqplot

我正在尝试构建一个简单的基于Ajax的饼图,但我终于意识到还有什么问题。即使我试图在这个社区中的其他人的灵感也没有成功。

我的代码:

            $(document).ready(function(){

                var ajaxDataRenderer = function(url, plot) {
                    var ret = null;
                    console.log(url);
                    console.log(plot);
                    $.ajax({
                        async: false,
                        url: url,
                        dataType:'json',
                        success: function(data) {
                            ret = data;
                            console.log(data);
                            console.warn(data);
                            console.log(ret);
                        }
                    });
                    return ret;
                };

                var jsonurl = "sub/auditLogStatusesForGraph_json.dsp";

                plo12 = $.jqplot('chartdiv', jsonurl,{
                    title: 'AJAX JSON Data Renderer',
                    dataRenderer: ajaxDataRenderer,
                    seriesDefaults: {
                        renderer: $.jqplot.PieRenderer,
                        rendererOptions: {
                            showDataLabels: true
                        }
                    },
                    legend: { show: true, location: 'e' }

                });

            });

jsonurl返回

[[['INFO',21451],['ALERT',13201],['ERROR',89],['SYSTEM',30],['0',1]]]

但仍然收到错误:

  

错误:未指定数据jquery.jqplot.min.js:4:14135

正如您所看到的,我已经尝试将管道调试到控制台,但似乎根本没有应用“成功”部分。即使我试图将其改为“完成”。

知道我错在哪里吗?

非常感谢您提前。

1 个答案:

答案 0 :(得分:0)

将以下代码放在success: function(data)

plo12 = $.jqplot('chartdiv', jsonurl,{
                    title: 'AJAX JSON Data Renderer',
                    dataRenderer: ajaxDataRenderer,
                    seriesDefaults: {
                        renderer: $.jqplot.PieRenderer,
                        rendererOptions: {
                            showDataLabels: true
                        }
                    },
                    legend: { show: true, location: 'e' }

                });