>  기사  >  웹 프론트엔드  >  EVAL을 사용하여 jqchart jquery 꺾은선형 차트 반환 데이터가 잘못됨 Solution_jquery

EVAL을 사용하여 jqchart jquery 꺾은선형 차트 반환 데이터가 잘못됨 Solution_jquery

WBOY
WBOY원래의
2016-05-16 15:29:401143검색

eval 함수는 처리된 일부 프로그램 코드를 구문 분석하여 실행 가능한 상태에 도달할 수 있습니다. 많은 게시물을 확인했는데 jqchart 플러그인이 꺾은선형 차트를 만들 때 반환되는 데이터는 모두 eval입니다. 나중에 알고 보니

1. 평가 처리가 전혀 필요하지 않습니다. 문자열을 직접 가로채기만 하면 됩니다(반환 값을 연결해야 합니다). 2. 처리된 문자열을 계열의 데이터에 넣으면

코드는 다음과 같습니다.

한 개만 5d951b1447c61ed1e8f4d70bad2848ba16b28748ea4df4d9c2150843fecfba68;

<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 데이터를 철자하는 것이 조금 낯설습니다. 저는 아직도 이런 논리적인 작업을 전개하는 것을 좋아합니다....

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.