2013-11-14 48 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