ホームページ > ウェブフロントエンド > jsチュートリアル > EVAL を使用して jqchart を処理する jquery 折れ線グラフの戻りデータが無効です solution_jquery

EVAL を使用して jqchart を処理する jquery 折れ線グラフの戻りデータが無効です solution_jquery

WBOY
リリース: 2016-05-16 15:29:40
オリジナル
1161 人が閲覧しました

eval 関数は、処理されたプログラム コードを解析して、実行可能な状態に到達することができます。jqchart プラグインが折れ線グラフを作成すると、処理時に返されるデータはすべて eval になります。後で分かりました:

1. eval 処理はまったく必要なく、文字列を直接インターセプトするだけです (戻り値は結合する必要があります)。 2. 加工した文字列をシリーズのデータ​​に入れる場合、

コードは次のとおりです:

1 つだけ

;

<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);//主要是对返回数据的处理,后面很明显多了一个","
  //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 を使用してバックグラウンド処理ページを作成しましたが、他に何をするのかわかりません

<&#63;php
include ("configaz.php"); //数据库连接在另一个文件内,这里就不弄了
 $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要求的字符串格式,当然用数组更好,可惜不怎么会
ログイン後にコピー
もっと良い方法があるはずですが、私はそれを学び、ゆっくりと模索し始めたばかりです


上記以外にももっと良い解決策があると思います。ぜひ一緒に学び、進歩してください。

ps: ajax はデータを読み取り、jqchart を使用してグラフを表示します

最近のプロジェクトではチャート効果を表示する必要があり、集めたチャートプラグインがようやく使えるようになりました。

しかし、jqchart と比較すると、まだ多くの違いがあります。

実現効果:

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轴数字显示 
     /* 
     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); 
     */
ログイン後にコピー
次に、変曲点のテキストの場合、元の表示は対応するデータ値でしたが、現在は対応する X 軸名を表示する必要があります:

if( x <= op.width){ 
       var dx=x-op.paddingL,dy=y-op.paddingT; 
       var dxx = i<=0 &#63; (dx+op.labelDataOffsetX - 5 + 'px'):( dx+op.labelDataOffsetX - 20 + 'px'); //坐标点x轴偏移 
       var dyy = i%2 &#63; (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)&#63;'#333':strokeStyle) 
       .css({"width":"100px","font-size":"12px"});  // cychai:样式控制 
ログイン後にコピー
デフォルトのデータを表示できます。次のステップは開発との連携です。

ajax を使用してデータを非同期に取得し、フォアグラウンドで表示したいと考えています。

ここでは、必要なデータ ページであるサンプル ページ chartdata.html を使用しました

[{labelX : ["デザイン","携帯性","使いやすさ","バッテリースタンバイ","カメラ機能","ズーム"],data:[[5,7,2,3 ,9 ,4]]}]

フォアグラウンドでは、ajax を通じてページをリクエストし、返された JSON データを処理して、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 :["外观设计","便携性","易用性","电池待机","摄像功能","变焦"], 
    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 ページ:

 
 
 
 
 
 
 
 
 
ログイン後にコピー
はい、完了です! 完全な例をリソースに記載します。

私は長い間 jquery ajax を使っていなかったので、json データの書き方に少し慣れていません。私は今でもこの種の論理的な作業を開発するのが好きです....

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート