我在访问JSONP对象中的内部元素时遇到问题。我的JSONP看起来像这样:
[
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": bool,
"Option": "",
"NameFirst": "",
"NameLast": "",
},
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": bool,
"Option": "",
"NameFirst": "",
"NameLast": "",
}
]
如何访问阵列?如果我使用以下内容访问它:
data = jsonp[i].EntityID;
它返回的全部是 undefined
修改
在Google Chromes控制台中,它会显示以下错误:
未捕获的TypeError:无法读取未定义的属性'EntityID'
我也尝试过:
data = jsonp[1];
只返回一个字符,无论是字母,数字还是“{”。
我尝试了其他几种方法,但它们要么一次性返回所有内容,要么返回单个字符或未定义。如何正确访问?
修改
我正在使用的JQuery脚本。我认为这很标准。我之前在Twitters API上使用过它。
$(document).ready(function GetData() {
var url = "http://";
$.getJSON(url + '?callback=?', null, function(Data) {
for(i in Data) {
foo = Data[i];
$('#Facilities').append('<div>' + foo[0].EntityID + '</div>');
console.log(foo);
}
})
})
答案 0 :(得分:2)
你的json无效。字符串值应用双引号括起来。所以你不能在值中给出bool
。您可以使用true
或false
,
var jsonp=[
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": true,
"Option": "",
"NameFirst": "",
"NameLast": "",
},
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": true,
"Option": "",
"NameFirst": "",
"NameLast": "",
}
]
然后你可以访问像
这样的元素alert(jsonp[0].EntityID);
如果你想使用bool作为值,
像这样使用"Adult": "bool",
修改强>
从编辑的部分中, “这只会返回一个字符,无论是字母,数字还是'{'。”
然后响应应该是字符串。这就是为什么你在给出索引时获得每个角色的原因。所以你需要先将字符串解析为json对象。
USe jQuery.parseJSON(
,
jsonp=jQuery.parseJSON(jsonp);
然后您可以访问该对象中的元素
$(document).ready(function GetData() {
var url = "http://";
$.getJSON(url + '?callback=?', null, function (Data) {
Data = jQuery.parseJSON(Data);
for (i in Data) {
foo = Data[i];
$('#Facilities').append('<div>' + foo[0].EntityID + '</div>');
console.log(foo);
}
})
})