2013-11-14 49 views
0

下面是我的代碼,其中的getJSON方法是行不通的的getJSON方法不起作用

function loadJson() { 
     $(document).ready(function() { 
      alert("inside"); 
      var chart; 
      var url = "values.json"; 
      var seriesData = []; 
      var xCategories = []; 
      var i, cat; 
      alert("outside"); 
      $.getJSON(url, function (data) { 
       alert("inside JSON function"); 
for (i = 0; i < data.length; i++) { 
        cat = '' + data[i].period_name; 
        if (xCategories.indexOf(cat) === -1) { 
         xCategories[xCategories.length] = cat; 
        } 
       } 
       for (i = 0; i < data.length; i++) { 
        if (seriesData) { 
         var currSeries = seriesData.filter(function (seriesObject) { 
          return seriesObject.name == data[i].series_name; 
         } 
         ); 
         if (currSeries.length === 0) { 
          seriesData[seriesData.length] = currSeries = { name: data[i].series_name, data: [] }; 
         } else { 
          currSeries = currSeries[0]; 
         } 
         var index = currSeries.data.length; 
         currSeries.data[index] = data[i].period_final_value; 
        } 
        else { 
         seriesData[0] = { name: data[i].series_name, data: [data[i].period_final_value] } 
        } 
       } 

       //var chart; 
       //$(document).ready(function() { 
       chart = new Highcharts.Chart({ 
        chart: { 
         renderTo: 'container', 
         type: 'bar' 
        }, 
        title: { 
         text: 'Stacked column chart' 
        }, 
        xAxis: { 
         categories: xCategories 
        }, 
        yAxis: { 
         //min: 0, 
         //max: 100, 
         title: { 
          text: 'Total fruit consumption' 
         }, 
         stackLabels: { 
          enabled: false, 
          style: { 
           fontWeight: 'bold', 
           color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray' 
          } 
         } 
        }, 
        legend: { 
         align: 'right', 
         x: -100, 
         verticalAlign: 'top', 
         y: 20, 
         floating: true, 
         backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white', 
         borderColor: '#CCC', 
         borderWidth: 1, 
         shadow: false 
        }, 
        tooltip: { 
         formatter: function() { 
          return '<b>' + this.x + '</b><br/>' + 
           this.series.name + ': ' + this.y + '<br/>' 
         } 
        }, 

        series: seriesData 


       }); 
      }); 

     }); 
    } 

在URL,values.json是我的JSON文件如下

[{"series_name":"Actual","period_name":"Q1/2013","period_final_value":17}, 
{"series_name":"Actual","period_name":"Q2/2013","period_final_value":15}, 
{"series_name":"Actual","period_name":"Q3/2013","period_final_value":13}, 
{"series_name":"Actual","period_name":"Q4/2013","period_final_value":19}, 

{"series_name":"Alarm","period_name":"Q1/2013","period_final_value":14.103}, 
{"series_name":"Alarm","period_name":"Q2/2013","period_final_value":14.404499999999999}, 
{"series_name":"Alarm","period_name":"Q3/2013","period_final_value":14.966999999999999}, 
{"series_name":"Alarm","period_name":"Q4/2013","period_final_value":50}, 

{"series_name":"Target","period_name":"Q1/2013","period_final_value":15.67}, 
{"series_name":"Target","period_name":"Q2/2013","period_final_value":16.005}, 
{"series_name":"Target","period_name":"Q3/2013","period_final_value":16.63}, 
{"series_name":"Target","period_name":"Q4/2013","period_final_value":100}] 

文件呈現但數據沒有顯示在圖表上,只有getJSON方法以外的警報有效,內部的不工作,相同的代碼,如果我嘗試從HTML頁面運行,那麼它工作正常,但現在我寫了整個代碼,因爲它是在VS in ASP.NET Web應用程序,我呼籲在JavaScript上身體的onLoad的loadJson功能如下,

<body onload="loadJson();"> 

但該方法不跑,不 能解決這個問題,任何幫助將不勝感激.. 。

----------附加工作------

當我添加在的getJSON上述方法的任何變量我的JSON數據和消除的getJSON方法和訪問該那麼我得到圖形正確,但是當我使用getJSON方法,那麼它不起作用

-----錯誤檢查----------

我檢查了鉻的錯誤,我知道它無法獲取json文件,我保留了JSON文件在項目文件夾,然後我也試圖通過保持json文件在本地,仍然它的說相同的錯誤..

現在我想我面臨的問題與MIME類型處理與ASPX頁.. ..任何東西鏈接它..??

+0

你的問題很不清楚。你談論'getJSON',但你使用'$ .get'。然後你提到圖表的數據沒有更新,但沒有顯示圖表的代碼,甚至不告訴我們是什麼類型的圖表......? –

+2

JSON數據是無效的 - 見[JSON格式/驗證(http://jsonformatter.curiousconcept.com/) – amdixon

+0

@RoryMcCrossan ..我會更新的問題,它的getJSON,但我改變了它的測試目的。 – Reshma

回答

1

1)確保您使用的是有效的JSON:www.jsonlint.com

2)在本地主機上運行您的JSON文件。告訴我,如果你看到你的瀏覽器上運行本地主機上的json文件。確保你在你的網站上有這個。配置

<system.webServer> 
    <staticContent> 
     <mimeMap fileExtension=".json" mimeType="application/json" /> 
    </staticContent> 
    </system.webServer> 

3)警報信息使用getJSON功能

$(document).ready(function() { 
    $.getJSON("values.json", function (data) { 
     $.each(data, function() { 
      alert(this.series_name); 
     }); 
    }); 
}); 

4)當你通過這些測試,繼續建立你的jQuery代碼。

+0

感謝洛特... – Reshma

0

使用$.getJSON$.get一樣,

$.getJSON(url, function (data) { 
    alert("inside JSON function"); 

,並檢查您jsonvalidnot(查了JSON tab有沒有在你的console

+0

的序列化方法我都用過,只有但不是不用彷徨$但仍然沒有工作,PLZ請參閱我的更新問題 – Reshma

+0

雅JSON文件...它是有效的json – Reshma

1

是否與文件的調用的任何錯誤?

嘗試以下操作:

$.getJSON(url) 
    .done(function(data) { 
    alert("INSIDE FUNCTION") 
    }) 
    .fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
    }); 

我一直都用這個編碼風格爲所有的jQuery AJAX(和包裝)調用,這樣我就可以給用戶,如果 請求失敗的響應。

+0

它沒有提供任何警報 – Reshma

+0

您在開發人員控制檯中是否出現此錯誤? – sHentschel

+0

我沒有得到任何錯誤,只是沒有處理還 – Reshma

0

http://jsonlint.com/發現您的JSON

[{"series_name":"Actual","period_name":"Q1/2013","period_final_value":17}, 
{"series_name":"Actual","period_name":"Q2/2013","period_final_value":15}, 
{"series_name":"Actual","period_name":"Q3/2013","period_final_value":13}, 
{"series_name":"Actual","period_name":"Q4/2013","period_final_value":19},] 

它不只是]支架之前,因爲,的有效JSON的問題。

+0

sorry..that,是錯,其實我的JSON文件大,所以我編輯它,我離開了,錯,我已經編輯我的完整JSON文件上方 – Reshma

+0

好的。 JSON文件和相同域上的代碼是什麼? –

+0

是的..它在同一個域... plz你可以請參考我更新的問題,我已經添加了一些信息。 – Reshma