2014-08-27 52 views
0

我想从托管的Web服务器上的文件使用JSON值,并相信我正确解析值并在我的Chartjs数组中使用它们,但出于某种原因,我收到错误消息我不能完全调试。解析网络服务器的JSON值到数据属性

错误1:Uncaught SyntaxError: Unexpected token h

代码参考:var gaValues = JSON.parse(url);

错误2:Uncaught SyntaxError: Unexpected token :

代码参考:labels: [ga:dayOfWeekName],

JSON:

{"kind": "analytics#gaData", "rows": [["Friday", "2"], ["Monday", "3"], ["Saturday", "0"], ["Sunday", "1"], ["Thursday", "4"], ["Tuesday", "4"], ["Wednesday", "4"]], "containsSampledData": false, "profileInfo": {"webPropertyId": "UA-22222-1", "internalWebPropertyId": "222222", "tableId": "ga:22222", "profileId": "2222", "profileName": "All Web Site Data", "accountId": "222222"}, "itemsPerPage": 50, "id": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:222222&dimensions=ga:dayOfWeekName&metrics=ga:sessions&start-date=7daysAgo&end-date=yesterday&max-results=50", "totalResults": 7, "query": {"max-results": 50, "dimensions": "ga:dayOfWeekName", "start-date": "7daysAgo", "start-index": 1, "ids": "ga:22222", "metrics": ["ga:sessions"], "end-date": "yesterday"}, "totalsForAllResults": {"ga:sessions": "18"}, "columnHeaders": [{"dataType": "STRING", "columnType": "DIMENSION", "name": "ga:dayOfWeekName"}, {"dataType": "INTEGER", "columnType": "METRIC", "name": "ga:sessions"}], "selfLink": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:22222&dimensions=ga:dayOfWeekName&metrics=ga:sessions&start-date=7daysAgo&end-date=yesterday&max-results=50"} 

Ç哈茨-options.js:

var url = 'https://test.appspot.com/query?id=ahJzfmNvbm5vcnBoaWxsaXBzMjtetssesestestststRyFQsSCEFwaVF1ZXJ5GICAgICAgIAKDA'; 

    var gaValues = JSON.parse(url); 

    var barChartdata = { 
     labels: [ga:dayOfWeekName], 
     datasets: [ 
      { 
       label: "My First dataset", 
       fillColor: "rgba(220,220,220,0.5)", 
       strokeColor: "rgba(220,220,220,0.8)", 
       highlightFill: "rgba(220,220,220,0.75)", 
       highlightStroke: "rgba(220,220,220,1)", 
       data: [gaValues.ga:sessions] 
      } 
     ] 
    }; 


    var options = { 

     //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value 
     scaleBeginAtZero : true, 

     //Boolean - Whether grid lines are shown across the chart 
     scaleShowGridLines : true, 

     //String - Colour of the grid lines 
     scaleGridLineColor : "rgba(0,0,0,.05)", 

     //Number - Width of the grid lines 
     scaleGridLineWidth : 1, 

     //Boolean - If there is a stroke on each bar 
     barShowStroke : true, 

     //Number - Pixel width of the bar stroke 
     barStrokeWidth : 2, 

     //Number - Spacing between each of the X value sets 
     barValueSpacing : 5, 

     //Number - Spacing between data sets within X values 
     barDatasetSpacing : 1, 

     //Boolean - Set if responsive or not 
     responsive : true 

    } 

window.onload = function(){ 

    // Get the context of the canvas element 
    var ctx = document.getElementById("sessions-graph").getContext("2d"); 
    var sessionsGraph = new Chart(ctx).Bar(barChartdata, options); //Create a chart with "data" array 

}; 

的index.html:

<!doctype html> 
<html> 

    <head> 
     <title>Google Super Proxy Test</title> 

     <script src="chart-options.js"></script> 
     <script src="Chart.min.js"></script> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    </head> 

<body> 

    <div style="width: 50%"> 
     <canvas id="sessions-graph" height="450" width="600"></canvas> 
    </div> 


</body> 

</html> 
+0

您没有撰写有效的javascript。另外,[JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)只接受JSON字符串。 – tcooc 2014-08-27 17:07:35

回答

0

JSON.parse需要一个JSON字符串,而不是你需要使用XMLHttpRequest来自己即加载数据的URL。尽管gaValues是不确定的,你还需要使用下面的符号来访问包含特殊字符的对象键:

gaValues["ga:sessions"] 
0

您正在尝试在行var gaValues = JSON.parse(url); 的JSON.parse解析URL在你的代码()方法将字符串解析为JSON。您需要将您的回复作为参数传递给URL。