使用EVAL處理jqchart jquery 折線圖返回?cái)?shù)據(jù)無(wú)效的解決辦法
eval函數(shù)可以把一些處理過(guò)程序代碼進(jìn)行解析從而達(dá)到可以執(zhí)行的一個(gè)狀態(tài),查了很多帖子,jqchart插件做折線圖時(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: '線形圖示例' }, 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軸分類顯示 /* 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軸名稱:
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柱狀圖、折線圖和餅圖的組合圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D帶Label的折線圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制的基本折線圖效果示例【附demo源碼下載】
- jQuery插件HighCharts實(shí)現(xiàn)2D柱狀圖、折線圖的組合多軸圖效果示例【附demo源碼下載】
- jQuery插件echarts實(shí)現(xiàn)的單折線圖效果示例【附demo源碼下載】
- jQuery插件echarts實(shí)現(xiàn)的多折線圖效果示例【附demo源碼下載】
- jQuery插件echarts設(shè)置折線圖中折線線條顏色和折線點(diǎn)顏色的方法
- jQuery實(shí)現(xiàn)折線圖的方法
- jquery.flot.js簡(jiǎn)單繪制折線圖用法示例
相關(guān)文章
基于jQuery實(shí)現(xiàn)Ajax驗(yàn)證用戶名是否可用實(shí)例
這篇文章主要為大家詳細(xì)介紹了基于jQuery實(shí)現(xiàn)Ajax驗(yàn)證用戶名是否可用實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03JQuery 插件制作實(shí)踐 xMarquee插件V1.0
今天要介紹的是實(shí)現(xiàn)類跑馬燈效果的的廣告插件。類似偶公司web-dev的同事在網(wǎng)站首頁(yè)上做的目錄廣告播放器。其實(shí)很簡(jiǎn)單,LEVIN實(shí)際應(yīng)用中也用到,所以稍作整理如下.2010-04-04修改Jquery Dialog 位置的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇修改Jquery Dialog 位置的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08jQuery 函數(shù)實(shí)例分析【函數(shù)聲明、函數(shù)表達(dá)式、匿名函數(shù)等】
這篇文章主要介紹了jQuery 函數(shù),結(jié)合實(shí)例形式分析了jquery函數(shù)聲明、函數(shù)表達(dá)式、匿名函數(shù)等相關(guān)使用技巧,需要的朋友可以參考下2020-05-05jquery實(shí)現(xiàn)仿JqueryUi可拖動(dòng)的DIV實(shí)例
這篇文章主要介紹了jquery實(shí)現(xiàn)仿JqueryUi可拖動(dòng)的DIV,實(shí)例分析了jquery模擬jqueryUI實(shí)現(xiàn)div拖動(dòng)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07jQuery實(shí)現(xiàn)簡(jiǎn)單的DIV拖動(dòng)效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單的DIV拖動(dòng)效果,涉及jQuery針對(duì)鼠標(biāo)事件的響應(yīng)及頁(yè)面元素的動(dòng)態(tài)操作技巧,需要的朋友可以參考下2016-02-02