1

我正在使用 ajax 连接到 PHP 脚本,然后检索 jqplot jQuery 图形库所需的图形坐标。

问题是我很难构建一个合适的 PHP 数组,然后可以将其转换为 jqplot 可以读取的 jQuery 数组。

下面是从 PHP 文件中检索数组的代码:

$.ajax({
    type: 'POST',
    dataType: "json",
    url: "behind_curtains.php",
    data: {
        monthSelected: month_option_selected
    },
    success: function (data) {
        var stored_data = data;
        alert(stored_data);
    }
});
return stored_data;
}

这是创建 jqplot 的代码

jQuery.jqplot('chartdiv-data', [], {
    title: 'Plot With Options',
    dataRenderer: stored_data,
    axesDefaults: {
        labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer
    },
    axes: {
        xaxis: {
            label: "Day",
        },
        yaxis: {
            label: "data"
        }
    }
});

如果您能帮我在 behind_curtains.php 文件中创建正确的数据数组,那就太好了!

编辑 1 图形坐标数组应采用以下形式:

[[[1,2],[3,5],[5,13]]]

基本上我需要以某种方式编写可以输出以该形式存储数据的数组的php代码。

谢谢

解决方案:

*behind_curtains.php*

我将一个数组放在一起,它只生成 [[1,2],[3,5],[5,13]] 形式的字符串。然后我将字符串存储在一个变量中,并以以下形式回显该变量:

echo json_encode($stored_data);

在用户方面,我的代码如下所示:

<script type="text/javascript">
$("document").ready(function() {
        $.ajax({
            type: 'POST',
            dataType:"json",
            url: "behind_curtains.php",
            data: {
                monthSelected: month_option_selected},
            success: function(data){                    
            var stored_data = eval(data) ;  
/* generate graph! */
$.jqplot('chartdiv-weight', [stored_data], {
 title: month, 
axesDefaults: {
    labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer
  },
  axes: {
    xaxis: {
      label: "Day",
    },
    yaxis: {
      label: "data"
    }
  }   
});
        }
        });
    }

}});</script>

希望对你有帮助,如果没有,有兴趣的请告诉我。

4

1 回答 1

1

您可以返回,但您需要在调用stored_data之前声明它,如最底部示例所示,here。您还必须使用:否则您不能以这种方式返回您的数据。出于同样的原因,如果您愿意,也可以改用。AJAXasync: falsegetJSON()

在格式化检索到的数据时,我在这里回答了一个类似的问题。您需要相应地构建数组来表示您的数据。

如果你能展示你的JSON样子,那么我可以给你一个更准确的答案。

于 2012-05-22T09:00:55.393 回答