使用JQuery访问JSONP对象中的元素
我在访问JSONP对象中的内部元素时遇到问题。我的JSONP如下所示:使用JQuery访问JSONP对象中的元素,jquery,arrays,json,object,jsonp,Jquery,Arrays,Json,Object,Jsonp,我在访问JSONP对象中的内部元素时遇到问题。我的JSONP如下所示: [ { "EntityID": "", "Address1": "", "Address2": "", "Address3": "", "Adult": bool, "Option": "", "NameFirst": "", "NameLast": "", }, { "EntityID": "", "Address1": "",
[
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": bool,
"Option": "",
"NameFirst": "",
"NameLast": "",
},
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": bool,
"Option": "",
"NameFirst": "",
"NameLast": "",
}
]
data = jsonp[i].EntityID;
如何访问阵列?如果我使用如下方式访问它:
[
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": bool,
"Option": "",
"NameFirst": "",
"NameLast": "",
},
{
"EntityID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"Adult": bool,
"Option": "",
"NameFirst": "",
"NameLast": "",
}
]
data = jsonp[i].EntityID;
它返回的所有内容都是未定义的
编辑
在Google Chromes控制台中,它显示以下错误:
未捕获的TypeError:无法读取未定义的属性“EntityID”
我也尝试过:
data = jsonp[1];
它只返回单个字符,无论它是字母、数字还是“{”
我尝试过其他几种方法,但它们要么一次返回所有内容,要么返回一个字符,要么返回未定义的内容。我如何才能正确访问这些内容
编辑
我正在使用的JQuery脚本。我认为它相当标准。我以前在TwittersAPI上使用过它
$(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);
}
})
})
$(document).ready(函数GetData(){
var url=“http://”;
$.getJSON(url+'?回调=?',null,函数(数据){
对于(数据中的i){
foo=数据[i];
$('#Facilities').append('+foo[0].EntityID+'');
console.log(foo);
}
})
})
您的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作为值,
像这样使用“成人”:“bool”,
编辑
从问题的编辑部分,
它只返回单个字符,无论是字母、数字还是“{”
然后响应应该是字符串。这就是为什么在给出索引时要获取每个字符。所以首先需要将字符串解析为json对象
使用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);
}
})
})
$(document).ready(函数GetData(){
var url=“http://”;
$.getJSON(url+'?回调=?',null,函数(数据){
Data=jQuery.parseJSON(数据);
对于(数据中的i){
foo=数据[i];
$('#Facilities').append('+foo[0].EntityID+'');
console.log(foo);
}
})
})
像这样?@AnoopJoshi这正是我所想的。但它仍然返回未定义的。@AnoopJoshi当我在Google Chrome的控制台中看到这个错误时,它说它是“未捕获的TypeError:无法读取未定义的属性'EntityID',听起来你手上有一个字符串,而不是JSONP,如果你访问数组中的值时设置单个字符,可以是字母、数字或括号。如果可以使用jQuery,可以使用:将字符串转换为JSON对象。在响应中,它有“true”和“false”。我用“bool”来强调它的类型。@Corey你检查过那把小提琴了吗?@Corey你能告诉我们获取jsonp的代码吗。?