Я пытаюсь научиться работать с вызовами и ответами 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
Итак, на данный момент мне нужно сохранить и использовать значение "number11" из поля 2. Я читал и искал более часа и обнаружил, что этот возврат api не является действительным возвращением "массива", вместо этого он называется "полем" (я могу ошибаться), но я не смог найти никакой информации о том, как я могу получить данные "number11" из этого ответа api.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


$('#numbers').html(data.field1); => No success, empty page
data.field1 точно существует? или проверка орфографии.
Вы можете получить ключи по Object.keys(data).
Если данные существуют, он возвращает ["success", "filed2", "field2"].
Таким же образом вы уже знаете ключ, например number11,
Возвращаемое значение data.field2.number11 или data["field2"]["number11"].
Если вы не знаете ключ, возвращается значение data["filed2"][Object.keys(data)[0]].
Я пробовал object.keys (data), и он возвращает три параметра success,field1,field2. Также, если я попытаюсь запустить object.keys как (data.field2), он вернет number11,number22
Благодаря https://stackoverflow.com/users/10366589/sh-k я решил проблему данным способом;
Поскольку мне не удалось распечатать вывод field2 в HTML, я проверил ключи в field2 с помощью этого кода;
alert(Object.keys(data.field2));
и он вернулся
number11,number22
поскольку мне нужен был только номер 11 из этого ответа API, я сделал следующее;
var.storednumber = Object.keys(data.field2);
var.storednumber = storednumber[0];
$('#numbers').html(storednumber);
и я смог без проблем напечатать желаемый номер на экране :)
Могло быть лучшее решение или исправление проблемы, с которой я столкнулся, но на данный момент это решено. Я предполагаю, что проблема заключается в типе ответа API, поскольку он не возвращает данные в формате массива.
Как ни странно, когда я пытаюсь предупредить «data.field1», он предупреждает данные из field1, такие как «number1: number1_val», «number2: number2_val». Но не могу распечатать их на веб-странице