--- id: 587d7fae367417b2b2512be3 title: Отримання JSON методом JavaScript XMLHttpRequest challengeType: 6 forumTopicId: 301502 dashedName: get-json-with-the-javascript-xmlhttprequest-method --- # --description-- Ви можете надсилати запит на дані із зовнішніх джерел. Саме тут використовуються API. Пам'ятайте, що API (або ППІ - прикладний програмний інтерфейс) - це інструменти, що дозволяють комп'ютерам обмінюватись інформацією один з одним. Ви дізнаєтесь, як оновити HTML та дані з API за допомогою технології AJAX. Більшість веб-API передають дані у форматі JSON. JSON - це JavaScript Object Notation. Синтаксис JSON схожий на літеральну нотацію об'єкта в JavaScript. У JSON властивості об'єкта та їх поточні значення обрамлені `{` та `}`. Ці властивості разом зі значеннями часто називаються парами "ключ-значення". Ваша програма отримає дані JSON через API як `string`, хоча вони надіслані у форматі `bytes`. За замовчуванням дані надсилаються не у форматі JavaScript, проте їх можна конвертувати. Методом `JSON.parse` аналізується рядок та створюється потрібний об'єкт JavaScript. Запросіть JSON через freeCodeCamp's Cat Photo API. Додайте цей код до кліку для виконання запиту: ```js const req = new XMLHttpRequest(); req.open("GET",'/json/cats.json',true); req.send(); req.onload = function(){ const json = JSON.parse(req.responseText); document.getElementsByClassName('message')[0].innerHTML = JSON.stringify(json); }; ``` Зверніть увагу на кожний елемент коду. Об'єкт JavaScript `XMLHttpRequest` має певні властивості та методи для передачі даних. Спочатку створюють об'єкт `XMLHttpRequest` та зберігають у змінній `req`. Потім методом `open` надсилають запит `GET`, адже йде отримання даних з API. URL-адреса API, з якого ви зробили запит даних, є другим аргументом для `open`. Третій аргумент - логічне значення, яке надсилає асинхронний запит за допомогою `true`. Сам запит надсилають методом `send`. Врешті-решт, обробник події `onload` аналізує отримані дані та перетворює об'єкт JavaScript методом `JSON.stringify` у рядок. Далі цей рядок буде вставлено як текст повідомлення. # --instructions-- Щоб створити та надіслати запит `GET` до freeCodeCamp Cat Photo API, оновіть код. Далі натисніть кнопку `Get Message`. Тест `The message will go here` буде замінено даними з API формату raw JSON за допомогою функції AJAX. # --hints-- Створіть новий `XMLHttpRequest` у коді. ```js assert(code.match(/new\s+?XMLHttpRequest\(\s*?\)/g)); ``` Щоб створити запит `GET` для freeCodeCamp Cat Photo API, використайте метод `open`. ```js assert( code.match( /\.open\(\s*?('|")GET\1\s*?,\s*?('|")\/json\/cats\.json\2\s*?,\s*?true\s*?\)/g ) ); ``` Щоб відправити запит, використайте метод `send`. ```js assert(code.match(/\.send\(\s*\)/g)); ``` Для того, щоб код працював, вам потрібен сет обробника подій `onload`. ```js assert( code.match(/\.onload\s*=\s*(function|\(\s*?\))\s*?(\(\s*?\)|\=\>)\s*?{/g) ); ``` Щоб зробити аналіз `responseText`, використайте метод `JSON.parse`. ```js assert(code.match(/JSON\s*\.parse\(\s*.*\.responseText\s*\)/g)); ``` Щоб змінити внутрішній HTML на рядок з даними JSON, використайте у коді елемент класу `message`. ```js assert( code.match( /document\s*\.getElementsByClassName\(\s*?('|")message\1\s*?\)\[0\]\s*\.innerHTML\s*?=\s*?JSON\.stringify\(.+?\)/g ) ); ``` # --seed-- ## --seed-contents-- ```html

Cat Photo Finder

The message will go here

``` # --solutions-- ```html

Cat Photo Finder

The message will go here

```