jquery - Get Json arrays values in a javascript function - Stack Overflow

I have defined a json array in a file as {mainServiceBar= [{ "mainServiceName":"ECONOMIC

I have defined a json array in a file as

{
    mainServiceBar= [
        { "mainServiceName":"ECONOMIC SERVICES" , "mainServiceValue":"23.2" },
        { "mainServiceName":"SOCIAL SERVICES" , "mainServiceValue":"34.5" },
        { "mainServiceName":"DEFENSE" , "mainServiceValue":"4.5" },
        { "mainServiceName":"GENERAL PUBLIC SERVICES" , "mainServiceValue":"19" },
        { "mainServiceName":"DEBT BURDEN" , "mainServiceValue":"18.8" },
    ];


    subServiceBar1: [
        { "subServiceName":"agriculture" , "subServiceValue":"12.5" },
        { "subServiceName":"trade" , "subServiceValue":"12.5" },
        { "subServiceName":"tourism" , "subServiceValue":"12.5" },
        { "subServiceName":"power and energy" , "subServiceValue":"12.5" },
        { "subServiceName":"water resource" , "subServiceValue":"12.5" }
        { "subServiceName":"munication roads" , "subServiceValue":"12.5" }
        { "subServiceName":"other economic services" , "subServiceValue":"12.5" },
        { "subServiceName":"subsidy" , "subServiceValue":"12.5" },
    ];
}

now i want these json arrays values in a javascript function , I have done few things but it I didn't get the values , my code is as follows :

function getJsonArray() {
    return $.getJSON("myjson.js"); 
}

function socialservice(thisv) {
    json = getJsonArray();

    for (var key in json) {
        if (json.hasOwnProperty(key)) {
            var item = json[key];

            alert(item.mainServiceName);
        }
    }

    return false;
}

**EDITED I have also tried this :

$.getJSON("myjson.json", function(data) {
    alert("val");

    var items = [];

    $.each(data, function(key, val) {
        alert(val);
    });
});

but it do\esn't alert anything means it do not get json data

It alerts undefined , Please suggest me some way to get the values , Thanks

I have defined a json array in a file as

{
    mainServiceBar= [
        { "mainServiceName":"ECONOMIC SERVICES" , "mainServiceValue":"23.2" },
        { "mainServiceName":"SOCIAL SERVICES" , "mainServiceValue":"34.5" },
        { "mainServiceName":"DEFENSE" , "mainServiceValue":"4.5" },
        { "mainServiceName":"GENERAL PUBLIC SERVICES" , "mainServiceValue":"19" },
        { "mainServiceName":"DEBT BURDEN" , "mainServiceValue":"18.8" },
    ];


    subServiceBar1: [
        { "subServiceName":"agriculture" , "subServiceValue":"12.5" },
        { "subServiceName":"trade" , "subServiceValue":"12.5" },
        { "subServiceName":"tourism" , "subServiceValue":"12.5" },
        { "subServiceName":"power and energy" , "subServiceValue":"12.5" },
        { "subServiceName":"water resource" , "subServiceValue":"12.5" }
        { "subServiceName":"munication roads" , "subServiceValue":"12.5" }
        { "subServiceName":"other economic services" , "subServiceValue":"12.5" },
        { "subServiceName":"subsidy" , "subServiceValue":"12.5" },
    ];
}

now i want these json arrays values in a javascript function , I have done few things but it I didn't get the values , my code is as follows :

function getJsonArray() {
    return $.getJSON("myjson.js"); 
}

function socialservice(thisv) {
    json = getJsonArray();

    for (var key in json) {
        if (json.hasOwnProperty(key)) {
            var item = json[key];

            alert(item.mainServiceName);
        }
    }

    return false;
}

**EDITED I have also tried this :

$.getJSON("myjson.json", function(data) {
    alert("val");

    var items = [];

    $.each(data, function(key, val) {
        alert(val);
    });
});

but it do\esn't alert anything means it do not get json data

It alerts undefined , Please suggest me some way to get the values , Thanks

Share Improve this question edited Sep 20, 2013 at 10:02 Darkzaelus 2,0951 gold badge16 silver badges31 bronze badges asked Sep 20, 2013 at 7:14 InforianInforian 1,7366 gold badges23 silver badges42 bronze badges 2
  • 3 incorrect json provided – Dart Commented Sep 20, 2013 at 7:29
  • It is true that the json is incorrect but the function to read the json is also incorrect, see my answer. – Yussuf S Commented Sep 20, 2013 at 7:49
Add a ment  | 

3 Answers 3

Reset to default 1

please change your json file to below (it was wrongly formatted)

{
    mainServiceBar: [
        { "mainServiceName":"ECONOMIC SERVICES" , "mainServiceValue":"23.2" },
        { "mainServiceName":"SOCIAL SERVICES" , "mainServiceValue":"34.5" },
        { "mainServiceName":"DEFENSE" , "mainServiceValue":"4.5" },
        { "mainServiceName":"GENERAL PUBLIC SERVICES" , "mainServiceValue":"19" },
        { "mainServiceName":"DEBT BURDEN" , "mainServiceValue":"18.8" }
    ],
    subServiceBar1: [
        { "subServiceName":"agriculture" , "subServiceValue":"12.5" },
        { "subServiceName":"trade" , "subServiceValue":"12.5" },
        { "subServiceName":"tourism" , "subServiceValue":"12.5" },
        { "subServiceName":"power and energy" , "subServiceValue":"12.5" },
        { "subServiceName":"water resource" , "subServiceValue":"12.5" },
        { "subServiceName":"munication roads" , "subServiceValue":"12.5" },
        { "subServiceName":"other economic services" , "subServiceValue":"12.5" },
        { "subServiceName":"subsidy" , "subServiceValue":"12.5" }
    ]
}

also change the socialservice function code to below it was wrongly retrieving the values :

function socialservice(thisv) {
    $.getJSON("myjson.js", function(json) {
        for (key in json) {
          $.each(json[key], function(k, arrayItem) {
            alert(arrayItem.mainServiceName);
          });
        }
    });
    return false;
}

call the function with socialservice(); anywhere in your code.

Accordin with getJson doc you should write a callback in order to manipulate the data.

$.getJSON( "myjson.js", function( json ) {
    for (var key in json) {
          // code
    }
});

NB: Your JSON code posted is invalid. There are a lot of errors. Try to replace with this:

{
    "mainServiceBar": [
        { "mainServiceName":"ECONOMIC SERVICES" , "mainServiceValue":"23.2" },
        { "mainServiceName":"SOCIAL SERVICES" , "mainServiceValue":"34.5" },
        { "mainServiceName":"DEFENSE" , "mainServiceValue":"4.5" },
        { "mainServiceName":"GENERAL PUBLIC SERVICES" , "mainServiceValue":"19" },
        { "mainServiceName":"DEBT BURDEN" , "mainServiceValue":"18.8" }
    ],
    "subServiceBar1": [
        { "subServiceName":"agriculture" , "subServiceValue":"12.5" },
        { "subServiceName":"trade" , "subServiceValue":"12.5" },
        { "subServiceName":"tourism" , "subServiceValue":"12.5" },
        { "subServiceName":"power and energy" , "subServiceValue":"12.5" },
        { "subServiceName":"water resource" , "subServiceValue":"12.5" },
        { "subServiceName":"munication roads" , "subServiceValue":"12.5" },
        { "subServiceName":"other economic services" , "subServiceValue":"12.5" },
        { "subServiceName":"subsidy" , "subServiceValue":"12.5" }
    ]
}

Change it to this:

function getJsonArray(){
    $.ajax({
        url : 'myjson.js',
        type: 'GET',
        success : socialservice
    })
}


function socialservice(data){

json= data;
for (var key in json) {
    if (json.hasOwnProperty(key)) {
    var item = json[key];
    alert(item.mainServiceName); }}
return false;
  }

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742281664a4414602.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信