无法从API请求中打印数据

时间:2018-09-20 06:05:45

标签: javascript arrays json api

我正在尝试学习有关API调用和响应的知识,我需要一个来自api响应的基本值,但我无法使其正常工作。所以这是我的问题;

(function worker() {
$.get('URL', function(data) {
   $('#numbers').html(data); });
})();

我使用此代码,并且可以正常工作,并将API响应写入我的HTML页面。 API调用也以这种格式返回值;

{
"success":"true",
"field1": {"number1":"number1_val","number2":"number2_val"},
"field2": {"number11":"number11_val","number22":"number22_val"}
}

现在,我尝试从API响应中写入值,并且成功编写了像这样的“成功”值;

$('#success_val').html(data.success);

它在给定的true字段中向我的HTML网站打印了#success_val值。但是,当我尝试写入field1或field1的第一个值时,我没有成功。我尝试过

$('#numbers').html(data.field1); => No success, empty page
$('nu#mbers').html(data.field1[0]); => No success, empty page

因此,在这一点上,我需要存储和使用的是字段2中的“ number11”值。我已经阅读并搜索了一个多小时,发现该api返回不是有效的“数组”返回,而是称为“字段”(可能是错误的),但是我找不到有关如何从此api响应中获取“ number11”数据的任何信息。

2 个答案:

答案 0 :(得分:0)

$('#numbers').html(data.field1); => No success, empty page

data.field1是否确实存在?或拼写检查。

您可以通过Object.keys(data)来获取密钥。

如果存在数据,则返回["success", "filed2", "field2"]。 同样,您已经知道密钥,例如number11data.field2.number11data["field2"]["number11"]返回值。 如果您不知道密钥,则data["filed2"][Object.keys(data)[0]]返回值

答案 1 :(得分:0)

感谢https://stackoverflow.com/users/10366589/sh-k,我以给定的方式解决了该问题;

由于我无法将field2的输出打印为HTML,因此我已使用此代码检查了field2的键;

alert(Object.keys(data.field2));

它返回了

number11,number22

由于我只需要该API响应中的number11,所以我执行了以下操作;

var.storednumber = Object.keys(data.field2);
var.storednumber = storednumber[0];
$('#numbers').html(storednumber);

我可以毫无问题地在屏幕上打印出我想要的号码:)

对于我遇到的问题,可能有更好的解决方案或解决方案,但是目前,此问题已解决。我猜问题出在API响应类型上,因为它不返回数组格式的数据。