使用EVAL處理jqchart jquery 折線圖返回數(shù)據(jù)無效的解決辦法
eval函數(shù)可以把一些處理過程序代碼進行解析從而達到可以執(zhí)行的一個狀態(tài),查了很多帖子,jqchart插件做折線圖時,處理返回數(shù)據(jù)時全都是eval,但我怎么也弄不出來,后來發(fā)現(xiàn):
1、根本不需要eval處理,直接截取字符串即可(返回值要拼接好);
2、處理好的字符串放進series的data里要加上[];
下面是代碼:
html頁面<body>標簽里面只放了一個<div id="jqChart" style="width: 500px; height: 300px;"></div>;
<script>里面
<script type="text/javascript" src="jquery.1.8.2.js"></script>
<script type="text/javascript" src="jquery-jqChart-min.js"></script>
<script type="text/javascript">
$(function () {
$.get("tgajax.php",function(data){
var dom = data.substring(0,data.length-1);//主要是對返回數(shù)據(jù)的處理,后面很明顯多了一個","
//var dom = eval('(' + dom + ')');
//alert( dom);
$('#jqChart').jqChart({
title: { text: '線形圖示例' },
axes: [
{
location: 'left',
minimum: 1,
maximum: 10,
interval: 1,
}
],
series: [
{
type: 'line',
title:'上海',
markers: null,//拐點不用圓點標示
strokeStyle: 'blue' ,
data: [['json', 1], ['per', 9], ['perter', 3]]
},
{
type: 'line',//line,Column
title:'北京',
strokeStyle: 'red' ,
data:[dom]
},
]
});
});
});
</script>
后臺處理頁面我就用簡單的php弄了,別的也不會
<?php
include ("configaz.php"); //數(shù)據(jù)庫連接在另一個文件內(nèi),這里就不弄了
$sql="select sid,sname,sprice,count(sprice) as pricenum from shangpin group by sname";
$query=mysql_query($sql);
$row=mysql_fetch_array($query);
while($row=mysql_fetch_array($query)){
$pricenum=$row['pricenum'];
$sname=$row['sname'];
}
echo $str .= "['".$sname."',".$pricenum."],";//拼接字符串,按照jqChart要求的字符串格式,當然用數(shù)組更好,可惜不怎么會
肯定還有更好的方法 只是我剛開始學(xué),慢慢摸索
相信解決辦法不止以上所述,肯定還有更好的解決辦法,歡迎大家共同學(xué)習(xí)進步。
ps:ajax讀取數(shù)據(jù),使用jqchart顯示圖表
最近項目中需要顯示出圖表效果,原來收集到的圖表插件終于有用武之地了。
但是和jqchart對比,還是有很多不同之處的。
實現(xiàn)效果:

我就對jqchart進行了重新編寫。
首先要解決的是不顯示x軸和y軸:
//各DIV作成
// 取消標題顯示
/*
this.titleBox//Title
=this.mkBoxElement('T',
this.op.titleLeft,this.op.titleTop
).appendTo(this.jQcanvasBox)
.css('width',this.op.width-this.op.titleLeft)//fix for safari3 2007.12.4
.get(0);
*/
// 取消y軸數(shù)字顯示
/*
this.scaleYBox//Y軸スケール
=this.mkBoxElement('Y',
this.op.scaleYLeft,this.op.scaleYTop
).appendTo(this.jQcanvasBox).get(0);
*/
// 取消x軸分類顯示
/*
this.scaleXBox//X軸スケール
=this.mkBoxElement('X',
this.op.scaleXLeft,this.op.scaleXTop
).appendTo(this.jQcanvasBox).get(0);
*/
其次,對于拐點的文字,原來顯示是相應(yīng)的data值,現(xiàn)在需要顯示的是對應(yīng)的x軸名稱:
if( x <= op.width){
var dx=x-op.paddingL,dy=y-op.paddingT;
var dxx = i<=0 ? (dx+op.labelDataOffsetX - 5 + 'px'):( dx+op.labelDataOffsetX - 20 + 'px'); //坐標點x軸偏移
var dyy = i%2 ? (dy+op.labelDataOffsetY - 25 + 'px'):(dy+op.labelDataOffsetY - 5 + 'px'); //坐標點y軸偏移
it.wrtText(
//dx+op.labelDataOffsetX - 20 + 'px',
dxx,
//dy+op.labelDataOffsetY - 10 + 'px',
dyy,
//op.rows[i], // pre: 坐標點data值
op.txtpointers[i], // cychai:坐標點文字
op,
"#jQchart-data-D-"+op.id
).css('color',(op.data.length==1)?'#333':strokeStyle)
.css({"width":"100px","font-size":"12px"}); // cychai:樣式控制
使用默認的數(shù)據(jù)可以顯示出來了。接下來就是和開發(fā)的協(xié)作了。
我希望可以使用ajax異步獲取數(shù)據(jù),然后在前臺顯示。
這里,我使用了一個示例頁面chartdata.html, 即需要的數(shù)據(jù)頁
[{labelX : ["外觀設(shè)計","便攜性","易用性","電池待機","攝像功能","變焦"],data :[[5,7,2,3,9,4]]}]
在前臺,我通過ajax請求該頁面,對返回的json數(shù)據(jù)進行處理,傳遞給chartSetting:
$(function(){
$.ajax({
url: "chartdata.html",
type: "GET",
success: function(cdata){
showDDChart(cdata);
}
});
function showDDChart(cdata){
var dd_chart = eval(cdata)[0];
var chartSetting={
config : {
title : "",
titleLeft: 70,
labelX :dd_chart.labelX,
//labelX :["外觀設(shè)計","便攜性","易用性","電池待機","攝像功能","變焦"],
scaleY : {min: 0,max:10,gap:2},
width: 300+25,
height: 125+50,
paddingL : 10,
paddingT : 10
},
//data: [[5,3,1,8,4,9]]
data :dd_chart.data
};
$('#canvasMyID').jQchart(chartSetting);
}
});
完整的html頁面:
<head>
<!--[if IE]>
<mce:script src="excanvas-compressed.js" mce_src="excanvas-compressed.js" type="text/javascript" ></mce:script>
<![endif]-->
<mce:script src="http://jsgt.org/lib/jquery/plugin/jqchart/sample/v003/lib/jquery-1.2.3.min.js" mce_src="http://jsgt.org/lib/jquery/plugin/jqchart/sample/v003/lib/jquery-1.2.3.min.js" type="text/javascript"></mce:script>
<mce:script src="jquery.jqchart.js" mce_src="jquery.jqchart.js" type="text/javascript" charset="utf-8"></mce:script>
</head><body>
<canvas id="canvasMyID" height="200"></canvas>
<mce:script type="text/javascript"><!--
$(function(){
$.ajax({
url: "chartdata.html",
type: "GET",
success: function(cdata){
showDDChart(cdata);
}
});
function showDDChart(cdata){
var dd_chart = eval(cdata)[0];
var chartSetting={
config : {
title : "",
titleLeft: 70,
labelX :dd_chart.labelX,
//labelX :["外觀設(shè)計","便攜性","易用性","電池待機","攝像功能","變焦"],
scaleY : {min: 0,max:10,gap:2},
width: 300+25,
height: 125+50,
paddingL : 10,
paddingT : 10
},
//data: [[5,3,1,8,4,9]]
data :dd_chart.data
};
$('#canvasMyID').jQchart(chartSetting);
}
});
// --></mce:script>
</body>
</html>
OK,大功告成! 完整示例我會放到我的資源里。
好久都沒有用jquery ajax了,拼json數(shù)據(jù)都有些生疏了。還是喜歡開發(fā)這種有邏輯性的工作....
- jQuery插件HighCharts繪制2D柱狀圖、折線圖和餅圖的組合圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D帶Label的折線圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制的基本折線圖效果示例【附demo源碼下載】
- jQuery插件HighCharts實現(xiàn)2D柱狀圖、折線圖的組合多軸圖效果示例【附demo源碼下載】
- jQuery插件echarts實現(xiàn)的單折線圖效果示例【附demo源碼下載】
- jQuery插件echarts實現(xiàn)的多折線圖效果示例【附demo源碼下載】
- jQuery插件echarts設(shè)置折線圖中折線線條顏色和折線點顏色的方法
- jQuery實現(xiàn)折線圖的方法
- jquery.flot.js簡單繪制折線圖用法示例
相關(guān)文章
jquery實現(xiàn)每個數(shù)字上都帶進度條的幻燈片
瀏覽網(wǎng)頁時不小心會碰到這樣的一個網(wǎng)站有幻燈片而且每個數(shù)字上面都帶有進度條閑的無聊,自己用jquery實現(xiàn)了一個,因為有一個進度條的播放過程暫不支持ie6,熱愛特效的你可不要錯過了哈2013-02-02
jQuery實現(xiàn)自動調(diào)整字體大小的方法
這篇文章主要介紹了jQuery實現(xiàn)自動調(diào)整字體大小的方法,涉及jQuery針對頁面屬性與樣式動態(tài)操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06
hover的用法及l(fā)ive的用法介紹(鼠標懸停效果)
hover屬性在書寫css時大家都不會陌生了吧live主要用于對動態(tài)加載出來的元素綁定事件,下來將為大家詳細介紹下兩者的使用,感興趣的朋友可不要錯過了哈2013-03-03

