2014-07-23 2 views
0

이 코드를 사용하여 Yahoo finance CSV 파일의 JSON 데이터를 파싱하고 싶습니다. JSON 링크가 유효합니다. function (data)var data 행에 문제가 있습니다. 구문 분석 표는 function (data)을 호출하지만 이는 var data 행과 충돌합니다. The original code 테이블을 구문 분석 할 때 function (json)을 사용했지만이 특정 API는 function (data)에서만 작동하는 것으로 보입니다. 당신이 success: function(data) 기능을 data라는 JSON 데이터에 대한 변수를 전달하는 것처럼Yahoo Finance 파싱 jQuery를 사용하여 CSV에서 JSON 감시 목록

function drawTable() { 
// use jQuery to make an AJAX request for data 
$.ajax({ 
    type: "get", 
    dataType: "jsonp", 
    url: 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quoteslist%20where%20symbol%3D%27BRDT%2CAPPL%27&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=', 
    success: function (data) { 
     var data = new google.visualization.DataTable(); 

     data.addColumn('string', 'Symbol'); 
     data.addColumn('number', 'open'); 


     // parse the JSON into the DataTable 
     for (var i = 0; i < json.list.resources.length; i++) { 

      var symbol = json.list.resources[i].resource.fields.symbol; 
      var open = parseFloat(json.list.resources[i].resource.fields.open); 


      data.addRow([symbol, open]); 
     } 

     var table = new google.visualization.Table(document.querySelector('#table_div')); 
     table.draw(data); 
    } 
}); 
} 
google.load('visualization', '1', { 
    packages: ['table'], 
    callback: drawTable 
}); 
+0

당신이 구체적으로 발생한 문제를 설명 찾고 있었던 것입니다. "나는 선에 문제가있다"는 것만으로는 충분하지 않습니다. – Axel

+0

충돌 함수가있는 코드 두 개를 결합했습니다. 하나는 fucintion (데이터)이고 다른 하나는 함수 (json)입니다. 이 포스트를 모델화 한 코드의 실제 예제. _jpugliesi_는 내 실수를 암시했지만, 그가 제안한 해결책은 문제를 해결하지 못합니다. – musclez

답변

1

몇 가지 변수 이름을 변경하고 URL에서 https에서 's'를 제거하고 이상한 기호를 던지기 때문에 진단을 false로 설정하십시오.

희망이 당신이

demo

function drawTable() { 
    // use jQuery to make an AJAX request for data 
    $.ajax({ 
     type: "get", 
     dataType: 'json', 
     url: 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quoteslist%20where%20symbol%3D%27BRDT%2CAPPL%27&format=json&diagnostics=false&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=', 
     success: function (data) { 
      var dt = new google.visualization.DataTable(); 
      dt.addColumn('string', 'Symbol'); 
      dt.addColumn('number', 'Open'); 

      // parse the JSON into the DataTable 
      for (var i = 0; i < data.query.results.quote.length; i++) { 
       Symbol = data.query.results.quote[i].Symbol; 

       Open = parseFloat(data.query.results.quote[i].Open); 

       if (isNaN(Open)) { 
        Open = 0; 
       } 

       dt.addRow([Symbol, Open]); 
      } 

      var table = new google.visualization.Table(document.querySelector('#table_div')); 
      table.draw(dt); 
     }, 
     error: function (e, a, s) { 
      alert(s); 
     } 
    }); 
} 
google.load('visualization', '1', { 
    packages: ['table'], 
    callback: drawTable 
}); 
1

것 같습니다. 그런 다음 success 함수 내에서 DataTable 객체로 완전히 새로운 data 변수를 인스턴스화하므로 반환 된 JSON 데이터가 들어있는 이전 data 변수를 덮어 씁니다. (행 : var data = new google.visualization.DataTable();)

변수가 다른 것 (예 : data_table)으로 변경하려고 시도했지만이 변경이 작동하는지 실제로 확인하지는 않았습니다.

희망이 도움이됩니다.

+0

나는 당신의 방법을 시도했지만 주사위는 사용하지 않았다. [This (http://stackoverflow.com/questions/12250065/receive-csv-file-as-data-in-ajax-success-function)는 내가 함수화 된 변수를'data'로 바꾸기로 한 이유입니다. 제 생각에'type : "get",'and'dataType : "jsonp"와 함께'function (data)'을 사용하면 Google API를 내 코드의 주요 목표 인 동일한 코드와 함께 사용할 수 있습니다. original [post.] (http://stackoverflow.com/questions/24855953/stock-watchlist-with-google-finance-json-api) api와 JSON 요청의 사용에 대한 자세한 정보는 여기에서 확인할 수 있습니다. – musclez

관련 문제