Это объединенный блог 67-го и 68-го дня, так как мы уехали на выходные, и у меня не хватило времени вести блог на 67-й день, а затем 68-й день был коротким, потому что у меня не хватило энергии для полного дня учебы, а у Фрейи нет. любит спать, когда ее нет дома… не то чтобы она хорошо спала дома.
Сегодня я использовал информацию, которую я узнал об AJAX из учебника на YouTube (https://www.youtube.com/watch?v=rJesac0_Ftw&fbclid=IwAR2v57i-YG2zy_TjIMVOoQqWQKCjqQRHA0yvHxRomM1FqEltlbNbzQ2JCPY), и выполнил задачу, которую поставил передо мной мой муж. .
Вначале я столкнулся с препятствием, так как ссылка, которую он мне прислал, не была настроена так, чтобы разрешить моему веб-сайту, который я создавал, доступ к информации из бэкэнда, который он создал. Я потратил много времени, пытаясь узнать, как это исправить, и пытаясь понять, было ли это частью проблемы, но оказалось, что он просто неправильно настроил это для меня. Затем он прислал новую ссылку, и я вернулся на правильный путь.
Я снова посмотрел видео, но изменил его, чтобы он соответствовал контексту моей ситуации, что было хорошо, поскольку оно показало мне, что я понимаю разницу между вызовом информации из массива и из объекта, поскольку бэкэнд видео хранился в массиве, а бэкэнд я был объектом.
Все остальное было очень похоже, за исключением того, что у меня был только один язык для вызова, поэтому мне не нужно было настраивать цикл For для перебора нескольких вариантов.
Чтобы объяснить приведенный ниже код, я создал переменную, которая связана с div в HTML, и создал переменную для ссылки на кнопку с помощью document.getElementById. Затем я добавил eventListener к кнопке, когда она была нажата для запуска функции. Внутри функции я создал переменную, связанную с new XMLHttpRequest()
, затем использовал .open
для этой переменной и использовал GET
для получения информации по ссылке, которую мне прислал муж. Когда он загрузился, функция запустилась, она получила информацию из данных JSON и сохранила ее в переменной с именем ourData. Затем на этих наших данных была запущена функция renderHTML. Функция renderHTML связана с div, текст которого я хотел напечатать, и вставляет информацию о вызове HTML из объекта, хранящегося в бэкэнде. И, наконец, запрос был отправлен с использованием ourRequest.send()
var languageContainer = document.getElementById("languages-info") var btn = document.getElementById("btn"); btn.addEventListener("click", function () { var ourRequest = new XMLHttpRequest(); ourRequest.open('GET', 'https://gist.githubusercontent.com/philals/aefc1b1b7c5fc9f65d3915add2383483/raw/7e461d16e3243203cdc75c0d756a4ec076852948/hello.json?fbclid=IwAR3_t1AZJXYGyZd5K39PgZSzqhdhYpbLF-IRIzTNE6xh5V4m87Uj9Bu6Tik'); ourRequest.onload = function () { var ourData = JSON.parse(ourRequest.responseText); renderHTML(ourData); }; ourRequest.send(); }); function renderHTML(data) { languageContainer.insertAdjacentHTML('beforeend', 'You can say hi in the language ' + data.language + ' you say ' + data.text); }
Затем, когда кнопка была нажата на странице, сайт вызывал серверную часть, а затем печатал язык и приветствие на этом языке.
Есть еще кое-что, что нужно сделать с сайтом, но это подождет еще один день.