2012-05-21 57 views
1

我使用ajax连接到PHP脚本,然后检索jqplot jQuery图形库所需的图形坐标。如何在PHP中创建一个jqplot数据数组?

问题是,我构建一个合适的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>

我希望如果没有,有兴趣的人请告诉我。

+0

只是一个提示:你不能在AJAX调用后“返回”数据。当函数返回时'stored_data'将为空。 – Joseph

+0

非常感谢,我摆脱了它:)(我对阿贾克斯很新颖) – Dmitri

回答

1

您可以返回stored_data,但你需要有它的AJAX呼叫前宣布,喜欢shown in the bottom most example, here.还必须使用:async: false否则你不能用这种方式回报你的数据。出于同样的原因,如果你喜欢,你可以用getJSON()代替。

因为它将格式化检索到的数据a similar issue I answered here.您需要相应地构建阵列以表示数据。

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

+0

非常感谢Boro为您的答案,我最终弄明白了! – Dmitri

+0

@Dmitri如果你可以与他人分享你的解决方案,那将是非常好的。我发现至少有一个人赞成你的问题,这可能有助于他/她了解你的解决方案。 – Boro

相关问题