使用EVAL處理jqchart jquery 折線(xiàn)圖返回?cái)?shù)據(jù)無(wú)效的解決辦法
eval函數(shù)可以把一些處理過(guò)程序代碼進(jìn)行解析從而達(dá)到可以執(zhí)行的一個(gè)狀態(tài),查了很多帖子,jqchart插件做折線(xiàn)圖時(shí),處理返回?cái)?shù)據(jù)時(shí)全都是eval,但我怎么也弄不出來(lái),后來(lái)發(fā)現(xiàn):
1、根本不需要eval處理,直接截取字符串即可(返回值要拼接好);
2、處理好的字符串放進(jìn)series的data里要加上[];
下面是代碼:
html頁(yè)面<body>標(biāo)簽里面只放了一個(gè)<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);//主要是對(duì)返回?cái)?shù)據(jù)的處理,后面很明顯多了一個(gè)","
//var dom = eval('(' + dom + ')');
//alert( dom);
$('#jqChart').jqChart({
title: { text: '線(xiàn)形圖示例' },
axes: [
{
location: 'left',
minimum: 1,
maximum: 10,
interval: 1,
}
],
series: [
{
type: 'line',
title:'上海',
markers: null,//拐點(diǎn)不用圓點(diǎn)標(biāo)示
strokeStyle: 'blue' ,
data: [['json', 1], ['per', 9], ['perter', 3]]
},
{
type: 'line',//line,Column
title:'北京',
strokeStyle: 'red' ,
data:[dom]
},
]
});
});
});
</script>
后臺(tái)處理頁(yè)面我就用簡(jiǎn)單的php弄了,別的也不會(huì)
<?php
include ("configaz.php"); //數(shù)據(jù)庫(kù)連接在另一個(gè)文件內(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要求的字符串格式,當(dāng)然用數(shù)組更好,可惜不怎么會(huì)
肯定還有更好的方法 只是我剛開(kāi)始學(xué),慢慢摸索
相信解決辦法不止以上所述,肯定還有更好的解決辦法,歡迎大家共同學(xué)習(xí)進(jìn)步。
ps:ajax讀取數(shù)據(jù),使用jqchart顯示圖表
最近項(xiàng)目中需要顯示出圖表效果,原來(lái)收集到的圖表插件終于有用武之地了。
但是和jqchart對(duì)比,還是有很多不同之處的。
實(shí)現(xiàn)效果:

我就對(duì)jqchart進(jìn)行了重新編寫(xiě)。
首先要解決的是不顯示x軸和y軸:
//各DIV作成
// 取消標(biāo)題顯示
/*
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軸分類(lèi)顯示
/*
this.scaleXBox//X軸スケール
=this.mkBoxElement('X',
this.op.scaleXLeft,this.op.scaleXTop
).appendTo(this.jQcanvasBox).get(0);
*/
其次,對(duì)于拐點(diǎn)的文字,原來(lái)顯示是相應(yīng)的data值,現(xiàn)在需要顯示的是對(duì)應(yīng)的x軸名稱(chēng):
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'); //坐標(biāo)點(diǎn)x軸偏移
var dyy = i%2 ? (dy+op.labelDataOffsetY - 25 + 'px'):(dy+op.labelDataOffsetY - 5 + 'px'); //坐標(biāo)點(diǎn)y軸偏移
it.wrtText(
//dx+op.labelDataOffsetX - 20 + 'px',
dxx,
//dy+op.labelDataOffsetY - 10 + 'px',
dyy,
//op.rows[i], // pre: 坐標(biāo)點(diǎn)data值
op.txtpointers[i], // cychai:坐標(biāo)點(diǎn)文字
op,
"#jQchart-data-D-"+op.id
).css('color',(op.data.length==1)?'#333':strokeStyle)
.css({"width":"100px","font-size":"12px"}); // cychai:樣式控制
使用默認(rèn)的數(shù)據(jù)可以顯示出來(lái)了。接下來(lái)就是和開(kāi)發(fā)的協(xié)作了。
我希望可以使用ajax異步獲取數(shù)據(jù),然后在前臺(tái)顯示。
這里,我使用了一個(gè)示例頁(yè)面chartdata.html, 即需要的數(shù)據(jù)頁(yè)
[{labelX : ["外觀設(shè)計(jì)","便攜性","易用性","電池待機(jī)","攝像功能","變焦"],data :[[5,7,2,3,9,4]]}]
在前臺(tái),我通過(guò)ajax請(qǐng)求該頁(yè)面,對(duì)返回的json數(shù)據(jù)進(jìn)行處理,傳遞給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è)計(jì)","便攜性","易用性","電池待機(jī)","攝像功能","變焦"],
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頁(yè)面:
<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è)計(jì)","便攜性","易用性","電池待機(jī)","攝像功能","變焦"],
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,大功告成! 完整示例我會(huì)放到我的資源里。
好久都沒(méi)有用jquery ajax了,拼json數(shù)據(jù)都有些生疏了。還是喜歡開(kāi)發(fā)這種有邏輯性的工作....
- jQuery插件HighCharts繪制2D柱狀圖、折線(xiàn)圖和餅圖的組合圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D柱狀圖、折線(xiàn)圖的組合雙軸圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D帶Label的折線(xiàn)圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制的基本折線(xiàn)圖效果示例【附demo源碼下載】
- jQuery插件HighCharts實(shí)現(xiàn)2D柱狀圖、折線(xiàn)圖的組合多軸圖效果示例【附demo源碼下載】
- jQuery插件echarts實(shí)現(xiàn)的單折線(xiàn)圖效果示例【附demo源碼下載】
- jQuery插件echarts實(shí)現(xiàn)的多折線(xiàn)圖效果示例【附demo源碼下載】
- jQuery插件echarts設(shè)置折線(xiàn)圖中折線(xiàn)線(xiàn)條顏色和折線(xiàn)點(diǎn)顏色的方法
- jQuery實(shí)現(xiàn)折線(xiàn)圖的方法
- jquery.flot.js簡(jiǎn)單繪制折線(xiàn)圖用法示例
相關(guān)文章
AspNet中使用JQuery boxy插件的確認(rèn)框
Boxy是一個(gè)基于JQuery的彈出層插件,它有相對(duì)漂亮的外觀,功能齊全,支持iframe,支持模式窗口但相對(duì)于同樣的彈出層插件BlockUI它明顯笨重,但使用不那么方便。 兼容瀏覽器:IE6+/Firefox/Google Chrome2015-05-05
jquery實(shí)現(xiàn)每個(gè)數(shù)字上都帶進(jìn)度條的幻燈片
瀏覽網(wǎng)頁(yè)時(shí)不小心會(huì)碰到這樣的一個(gè)網(wǎng)站有幻燈片而且每個(gè)數(shù)字上面都帶有進(jìn)度條閑的無(wú)聊,自己用jquery實(shí)現(xiàn)了一個(gè),因?yàn)橛幸粋€(gè)進(jìn)度條的播放過(guò)程暫不支持ie6,熱愛(ài)特效的你可不要錯(cuò)過(guò)了哈2013-02-02
jQuery實(shí)現(xiàn)自動(dòng)調(diào)整字體大小的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)自動(dòng)調(diào)整字體大小的方法,涉及jQuery針對(duì)頁(yè)面屬性與樣式動(dòng)態(tài)操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06
hover的用法及l(fā)ive的用法介紹(鼠標(biāo)懸停效果)
hover屬性在書(shū)寫(xiě)css時(shí)大家都不會(huì)陌生了吧live主要用于對(duì)動(dòng)態(tài)加載出來(lái)的元素綁定事件,下來(lái)將為大家詳細(xì)介紹下兩者的使用,感興趣的朋友可不要錯(cuò)過(guò)了哈2013-03-03
jQuery初識(shí)之設(shè)計(jì)思想方法函數(shù)示例
這篇文章主要為大家介紹了jQuery初識(shí)之設(shè)計(jì)思想及方法函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Jquery練習(xí)之表單驗(yàn)證實(shí)現(xiàn)代碼
Jquery練習(xí)之表單驗(yàn)證實(shí)現(xiàn)代碼,學(xué)習(xí)jquery的朋友可以參考下。2010-12-12

