在jquery

时间:2016-02-18 04:16:42

标签: php jquery json

我正在使用amcharts(折线图)。使用ajax动态设置数据,并以JSON格式从php代码获取数据。

问题是字符串未动态更改为数组。

如果我在jquery代码中添加了这个字符串static

[{"country":"17 Feb","visits":"4","color":"#EA5759"},{"country":"16 Feb","visits":"1","color":"#EA5759"},{"country":"15 Feb","visits":"3","color":"#EA5759"}];

这很好。

如果我已动态设置此代码。折线图显示未定义。

我已经使用了这个功能

ajax返回代码

[{" country":" 2月17日""访问":" 4","颜色" :"#EA5759"},{"国家":" 16月","访问":" 1", "颜色":"#EA5759"},{"国家":" 2月15日","访问":& #34; 3""颜色":"#EA5759"}]

我刚刚在这个功能上传递了这个。像

var ajaxString = [{" country":" 2月17日","访问":" 4","颜色& #34;:"#EA5759"},{"国家":" 2月16日","访问":" 1&# 34;,"颜色":"#EA5759"},{"国家":" 2月15日","访问&#34 ;:" 3""颜色":"#EA5759"}];

并调用此函数

应用于LineChart(ajaxString);

function lineChart(data){         var chart;

    var chartData=data;
    // SERIAL CHART
    chart = new AmCharts.AmSerialChart();
    chart.dataProvider = chartData;
    chart.categoryField = "country";
    chart.startDuration = 1;
    // AXES
    // category
    var categoryAxis = chart.categoryAxis;
    categoryAxis.labelRotation = 45; // this line makes category values to be rotated
    categoryAxis.gridPosition = "start";
    // value
    var valueAxis = new AmCharts.ValueAxis();
    valueAxis.dashLength = 5;
    //                                    valueAxis.title = "Visitors from country";
    valueAxis.axisAlpha = 0;
    chart.addValueAxis(valueAxis);
    // GRAPH
    var graph = new AmCharts.AmGraph();
    graph.valueField = "visits";
    graph.colorField = "color";
    graph.balloonText = "<b>[[category]]: [[value]] Users</b>";
    graph.type = "column";
    graph.lineAlpha = 0.2;
    graph.fillAlphas = 0.9;
    chart.addGraph(graph);
    // CURSOR
    var chartCursor = new AmCharts.ChartCursor();
    chartCursor.cursorAlpha = 0;
    chartCursor.zoomable = false;
    chartCursor.categoryBalloonEnabled = false;
    chart.addChartCursor(chartCursor);
    chart.creditsPosition = "top-right";
    // WRITE
    chart.write("chartdiv");
}[![undefined message][1]][1]

但那不起作用。 提前谢谢

3 个答案:

答案 0 :(得分:2)

你传递给你的函数的ajaxString只是一个字符串,而不是一个json对象,所以你的函数lineChart可能期望的是json对象,所以尝试将ajaxString转换为有效的json对象,然后再将它发送到你的函数

JSON.parse(ajaxString);

答案 1 :(得分:1)

这似乎是您尝试将JSON 字符串设置为chartdata而不是javascript 对象数组。

在这种情况下,您应该尝试解析通过ajax调用获取的字符串,如下所示:JSON.parse(dataelement),然后再将其设置为chartdata

答案 2 :(得分:-1)

您可以在PHP中动态创建代码,并通过json_encode转换json中的数组。 编码的json稍后可以在jquery中使用。