2013-09-04 4 views
0

jQuery (또는 하이 차트)를 사용하여 아래 함수에 데이터를 추가하려고합니다. 질문은 모든 코드를 문자열로 작성해야하므로 eval을 사용하지 않고 자바 스크립트 코드에 데이터를 포함하는 방법입니다.변수를 js 코드로 사용하는 방법은 무엇입니까?

{\ 
      type: 'pie',\ 
      name: 'Statuses',\ 
      data: [\ 
       [WSCH, 377]\ 
     ,\ 
       [WMATL, 4]\ 
     ,\ 
       [WAPPR, 349]\ 
     ,\ 
       [NCOMP, 3]\ 
     ,\ 
       [INPRG, 56]\ 
     ,\ 
       [COMP, 18]\ 
     ,\ 
       [CLOSE, 697]\ 
     ,\ 
       [APPR, 420]\ 
     \ 
      ]\ 
     } 

어떤 생각하십시오

function pie(data) 
{ 
    $(function() { 
    $('#renderingdiv').highcharts({ 
     chart: { 
      plotBackgroundColor: null, 
      plotBorderWidth: null, 
      plotShadow: false 
     }, 
     title: { 
      text: 'Browser market shares at a specific website, 2010' 
     }, 
     tooltip: { 
      pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' 
     }, 
     plotOptions: { 
      pie: { 
       allowPointSelect: true, 
       cursor: 'pointer', 
       dataLabels: { 
        enabled: true, 
        color: '#000000', 
        connectorColor: '#000000', 
        format: '<b>{point.name}</b>: {point.percentage:.1f} %' 
       } 
      } 
     }, 
     series: [**data**] 
    }); 
}); 
}; 

데이터처럼 보인다?

+0

뒤에 프레임 워크가 있습니까? –

+0

왜 eval()을 사용하고 싶지 않은지에 대한 이유는 무엇입니까? 그냥 호기심을 묻는다. – Raghu

+4

'data '는 문자열 리터럴로되어 있나? 그런 다음'eval' 대신'JSON.parse'를 사용하십시오. 그렇지 않다면 거기에있는 모든 백 슬래시가 무엇입니까? 그리고 처음에 어떻게 그들을 거기에 붙였습니까? 그들을 제거하면 마크 업을 JS 객체 리터럴로 사용할 수 있습니다. – Bergi

답변

1

이 빠르고 빠름 기능은 데이터를 유효한 JSON으로 변환하고 객체를 반환합니다.

function parseData(data) {  
    data = data 
     // remove \+line endings 
     .replace(/\[\n\r]+/g, '') 
     // insert double quotes for keys 
     .replace(/([\[{,])\s*(\w+)([,:])/g, '$1"$2"$3') 
     // replace values single quotes with double 
     .replace(/(:)\s*'(\w+)\s*'/g, '$1"$2"'); 
    return JSON.parse(data); 
} 

물론 코너 케이스를 처리하려면이 기능을 향상시켜야합니다.

DEMO :http://jsfiddle.net/qq98D/2/ (콘솔 출력 결과)

그러나 이것은 단지 해결 방법입니다. 진짜 해결책은 서버 출력을 변경하여 유효한 JSON을 반환하는 것입니다.

결과 (JSON 인코딩)

{ "타입": "원형", "이름": "되는 상태", "데이터"[ "WSCH", 377], [ " INPRG ", 56", "COMP", 18 ","CLOSE ", 697], [APPR"], [WAPPR], [349] , 420]]}

+0

예, 문제는 JSON으로 변환하지 않았습니다. 위에 표시된 것처럼 다른 형식의 데이터가 필요합니다. 파이 함수 코드의 일부인 것처럼 함수에 데이터 문자열 변수 (일부 js 코드를 포함 할 수도 있음)를 함수에 추가하는 방법을 원합니다. – user2735719

+0

다음은 해결할 상황입니다. http://jsfiddle.net/G9UZs/ – user2735719

+0

문제 없음 : http://jsfiddle.net/G9UZs/8/ –

관련 문제