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
Get Json arrays values in a javascript function
提问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;
}