Нужна помощь в сохранении значения вызова выборки в поле

#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]. Баланс); Похоже, что он все еще не заполняется, но это может быть связано с каким-то другим фактором. Я изучу дальше. Спасибо за вашу помощь!