#javascript #json #formio
#javascript #json #formio
Вопрос:
надеюсь, это простое решение для здешних экспертов. Я занимался некоторыми поисками и перепробовал довольно много различных возможных решений, но это испытание асинхронностью / синхронизацией сбивает меня с толку.
Во всяком случае, я пытаюсь извлечь JSON из API, который я написал. Я возвращаю значение нормально и проверил его в журнале консоли. Однако я пытаюсь скопировать определенное значение из этого JSON в поле внутри form.io .
JS:
fetch('https://example.com/pq-api/pq.php?date=' data.dateOfService)
.then(response => response.json())
.then(data => console.log(data));
Этот ответ JSON выглядит следующим образом:
[
{
"Date": "2020-08-09",
"Time": "06:00:06",
"Account": "Petty Cash",
"Balance": "148.53"
}
]
Сейчас я пытаюсь сохранить значение ‘Balance’ в поле внутри form.io называется «runningBalance». Итак, это должно быть что-то вроде:
value = jsonData.Balance;
Очевидно, что последняя часть полностью неверна, я знаю только, что мне нужно использовать «value =» из-за расположения этого скрипта в форме … но я не могу разобраться, как присвоить часть баланса JSON этому «значению».
Здесь очень ценится любая помощь!
Еще один снимок экрана при использовании «.then(data => console.log(data[0]));»:
Комментарии:
1. что вы получаете в console.log (данные)?
2. @Menawer, я добавил скриншот. Надеюсь, это поможет.
Ответ №1:
Ответ, похоже, представляет собой массив для вместо выполнения, например
value=data.Balance;
вы делаете
value=data[0].Balance;
Комментарии:
1. Это выдает мне следующую ошибку консоли: «Не удается прочитать свойство ‘Balance’ undefined». У меня такое чувство, что это потому, что выборка выполняется асинхронно, так что значение данных не определено …?
2. можете ли вы заменить это then(data => console.log(данные)); на then(data => console.log(данные[0])); и скажите мне ответ, и да, выборка является асинхронной, что код должен заменить console.log(данные);
3. Я добавил дополнительный скриншот
4. да, тогда ответ, который я вам дал, должен решить эту проблему, просто убедитесь, что заменили console.log (data) на value=data [0]. Баланс, он должен быть там.
5. Да, я вижу, что при выводе баланса на консоль он есть. Я изменил последнюю строку на: .then(данные => значение=data[0]. Баланс); Похоже, что он все еще не заполняется, но это может быть связано с каким-то другим фактором. Я изучу дальше. Спасибо за вашу помощь!