简体   繁体   中英

getJSON method does not work

Below is my code where getJSON method is not working

 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


                });
            });

        });
    }

In url , values.json is my JSON file as follows

[{"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}]

file renders but data is not shown on chart, only the alert outside the getJSON method works, inner one doesnot works, the same code if I try to run from html page then it works fine, but now I have written the entire code as it is in VS in ASP.NET Web Application and I have called the loadJson function on body onLoad in javascript as follows,

<body onload="loadJson();">

but the method doesn't run, not able to solve this, any help will be greatly appreciated...

----------Additional work------

when I add my JSON data in any variable above the getJSON method and eliminate the getJSON method and access that then I get the Graph properly but when I am using getJSON method then it's not working

-----Error Inspected----------

I inspected the error in chrome and I got to know it is not able to get the json file, I have kept the JSON file in project folder , then also I tried by keeping the json file in localhost, still its saying same error..

Now I am thinking I am facing problem with mime type handling with aspx page..is it anything to link with it..??

Is there any error with the call of file?

try the following:

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

I use this coding style mostly for all jquery ajax (and wrapper) calls, so that I can give the user a response if the request failed.

1) Make sure you are using a valid json: www.jsonlint.com

2) Run your json file on localhost. Tell me if you see the json file on your browser run on localhost. Make sure you have this in your web.config

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

3) Alert info using getJSON function

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

4) When you pass these tests, continue building up your jQuery codes.

Use $.getJSON not $.get like,

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

And Check your json is valid or not (Check a JSON tab is there in your console )

http://jsonlint.com/ found an issue with your 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},]

Its not a valid JSON because of the , just before the ] bracket.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM