使用JQuery访问JSONP对象中的元素

时间:2014-06-10 09:12:34

标签: jquery arrays json object jsonp

我在访问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);
        } 
    })
})

1 个答案:

答案 0 :(得分:2)

你的json无效。字符串值应用双引号括起来。所以你不能在值中给出bool。您可以使用truefalse

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