【发布时间】:2021-03-13 22:38:57
【问题描述】:
我正在通过 JQuery/JSON 访问 API。我可以使用以下命令将整个 JSON 块显示在页面上:
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
contentType: 'application/json',
headers: {'Access-Control-Allow-Origin': '*'},
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', 'Basic ' + btoa('un:pw'));
},
error: function(jqXHR, textStatus, data){
console.log("(1)Static error message");
console.log("(2)Output of textStatus " + textStatus);
console.log("(3)Output of data " + data);
},
success: function(data) {
var myData = data;
$('#myData').html('<p>'+ myData +'<p>')
}
})
但是,当我尝试从该 JSON 访问键/值时,我得到未定义。我想我没有正确解析 JSON。这是我在成功函数中尝试的一些代码示例:
$.each(myData.blockOne, function(data){
$('#myData').html('<p>'+ this.blockOne.id +'<p>')
});
这是 JSON 的一个示例:
[
{
"ItemName": {
"id": "XYZ",
"caseNumber": "123"
},
"blockOne": [
{
"id": "ABC",
"subject": "321",
}
],
"blockTwo": [
{
"id": "EFG",
"subject": "456",
}
]
},
{
"ItemName": {
"id": "HIJ",
"caseNumber": "333"
},
"blockOne": [
{
"id": "JIL",
"subject": "999",
}
],
"blockTwo": [
{
"id": "OPE",
"subject": "778",
}
]
},
]
我正在尝试输出如下内容:
物品
ID:XYZ
案例:123
第 1 块:
- ID:ABC
- 主题:321
第 2 块:
- ID:EFG
- 主题:456
物品
ID:HIJ
案例:333
第 1 块:
- ID:吉尔
- 主题:999
第 2 块:
- ID:OPE
- 主题:778
非常感谢任何帮助。
【问题讨论】:
-
ajax 请求已经将响应从 json 解析到对象/数组。这是因为您有
dataType: 'json'告诉 ajax 您希望返回 json,因此它会自动为您解析它。然后,您将获取已解析的对象并将其附加到段落字符串中。如果您希望它仍然是一个字符串,则需要将您的dataType声明更改为text。 -
看起来数据的外部容器是一个数组,您正试图从中访问“blockOne”属性。
-
我想你想要
$.each(myData,而不是$.each(myData.blockOne -
我认为 @CharlesBamford 正在做一些事情,但我不确定我的代码要更改什么。
标签: javascript jquery json ajax api