我想绘制图形使用海军报和MySQL,但发生异常
访问getdata.php
$sql = mysql_query("SELECT count(Msg_ID) as msgCount,From_user
FROM Messages
GROUP BY From_user");
echo "[";
while($result = mysql_fetch_array($sql))
{
//print_r($result);
echo "[".$result['msgCount'].",".$result['From_user']."]"."\n";
}
echo "]";
而对于绘图
<div id="plotarea" style="width:600px;height:300px;">
<script type="text/javascript">
var options = {
lines: { show: true },
points: { show: true },
xaxis: { min:0,max:5 },
yaxis: { min:1 ,max:60},
};
$.ajax({
url:"getData.php",
type:"post",
success:function(data)
{
alert(data);
$.plot($("#plotarea"),data,options);
//alert(data);
}
})
</script>
</div>
什么是错的代码? 接下来,我想其中一个轴是时间绘制图表。
$sql = mysql_query("SELECT count(Msg_ID) as msgCount,From_user
FROM Messages
GROUP BY From_user");
while($result = mysql_fetch_array($sql))
{
$user_data[] = array($result['msgCount'],$result['From_user']);
}
echo json_encode($user_data);
以上将消除与逗号分隔(其中,从我可以告诉,你永远不解决)问题。
接下来,JavaScript的:
<script type="text/javascript">
$(function () {
var options = {
lines: { show: true },
points: { show: true },
xaxis: { min:0,max:5 },
yaxis: { min:1 ,max:60},
};
$.get("getData.php", function(data){
$.plot($("#plotarea"),data,options);
},
json);
});
</script>
请注意,我改变$.ajax
到$.get
,因为你没有从页面传递任何数据给脚本,后是没有必要的。 如果你使用$.get
,所有的设置名称的假设。
还要注意,我把剧本出来的HTML,并把它内的jQuery window.onload
语法: $(function () {
。这会去你的HTML头。
从我可以告诉,你是不是真的需要AJAX的,因为你没有定义任何类型的事件将触发$就功能。 它看起来像你正在使用AJAX调用脚本时,你可以只把脚本到所加载的网页,就像同一个脚本:
<?php
$sql = mysql_query("SELECT count(Msg_ID) as msgCount,From_user
FROM Messages
GROUP BY From_user");
while($result = mysql_fetch_array($sql))
{
$user_data[] = array($result['msgCount'],$result['From_user']);
}
?>
<script type="text/javascript">
$(function () {
var options = {
lines: { show: true },
points: { show: true },
xaxis: { min:0,max:5 },
yaxis: { min:1 ,max:60},
};
var userposts = <?php echo json_encode($user_data); ?>;
$.plot($("#plotarea"),userposts,options);
</script>
<style type="text/css">
#plotarea {
width: 600px, height: 300px;
}
</style>
</head>
<body>
.....//Put whatever before the div
<div id="plotarea"></div>
.....//Finish up the page.
首先,它看起来像你创建你的PHP代码没有用逗号分隔分隔每个数据点列表项的JavaScript列表。
按照jQuery的$就文件传递给第一个参数success
的功能是从服务器返回的数据,按照“的dataType”参数格式 。 您还没有提供dataType
参数。 该文件说,如果没有它会智能地通过其中的responseXML或responseText的你的成功回调,基于MIME类型的响应 dataType
已经指定。
我猜数据获取传递给绘图功能是一个普通的旧字符串,而不是如预期由海军报一个JavaScript列表对象。 添加一个dataType: 'json'
选项,将$.ajax
调用应该解决这个问题了。
什么你想输出是在PHP侧的JSON文件,这将直接(手动或自动的库如jQuery)解析为一个Java脚本阵列
因此,有没有需要打印在PHP JSON,而不是你可以轻松的数据反馈到一个PHP数组,并使用json_encode功能可轻松地将其转换为一个JSON字符串。
一个小例子可以帮助你试图输出
回声 “[” $导致[ 'MSGCOUNT'] “” $结果[ 'FROM_USER']。。。 “]” “\ n” 个。
这在Java脚本[] =阵列和要创建[[]]内部数组=阵列。 但是,当阵列是大的,这是很麻烦的PHP呼应。 我们做什么。 阵列结构是在PHP类似。 你将需要的数据作为添加到PHP“数组内阵列”,例如:PHP阵列(阵列(1,2,3))= [[1,2,3]]。 如何映射它JSON?
容易==>回波json_encode(阵列(阵列(1,2,3));
干杯