jQuery 在 javascript 函数中获取 Json 数组值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18910957/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 22:45:13  来源:igfitidea点击:

Get Json arrays values in a javascript function

javascriptjqueryarraysjson

提问by Inforian

I have defined a json array in a file as

我在文件中定义了一个 json 数组

{
    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":"communication 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 :

现在我想要在 javascript 函数中使用这些 json 数组值,我做了几件事但我没有得到这些值,我的代码如下:

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;
}

**EDITEDI 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

但它不会发出任何警报,这意味着它不会获取 json 数据

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

它提醒未定义,请建议我一些获取值的方法,谢谢

回答by Luca Rainone

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

根据getJson doc,您应该编写回调以操作数据。

$.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:

注意:您发布的 JSON 代码无效。有很多错误。尝试用这个替换:

{
    "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":"communication roads" , "subServiceValue":"12.5" },
        { "subServiceName":"other economic services" , "subServiceValue":"12.5" },
        { "subServiceName":"subsidy" , "subServiceValue":"12.5" }
    ]
}

回答by Yussuf S

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

请将您的 json 文件更改为以下(格式错误)

{
    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":"communication 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.

socialservice();在代码中的任何位置调用该函数。

回答by LondonAppDev

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;
  }