Нові способи я: fetch
TL; DR Я б рекомендував цей спосіб, якщо вам не доведеться надсилати синхронні запити або підтримувати старі браузери.
Поки ваш запит асинхронний, ви можете використовувати API Fetch для надсилання запитів HTTP. API вибору працює з обіцянками , що є чудовим способом обробки асинхронних робочих процесів у JavaScript. За допомогою цього підходу ви використовуєте fetch()
для надсилання запиту та ResponseBody.json()
аналізу відповіді:
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(jsonResponse) {
// do something with jsonResponse
});
Сумісність: API Fetch не підтримується IE11, а також Edge 12 і 13. Однак існують полізаливки .
Нові шляхи II: responseType
Як писав у своїй відповіді Лондерен , новіші браузери дозволяють використовуватиresponseType
властивість для визначення очікуваного формату відповіді. Далі проаналізовані дані відповідей можна отримати через response
властивість:
var req = new XMLHttpRequest();
req.responseType = 'json';
req.open('GET', url, true);
req.onload = function() {
var jsonResponse = req.response;
// do something with jsonResponse
};
req.send(null);
Сумісність: responseType = 'json'
не підтримується IE11.
Класичний спосіб
Стандартний XMLHttpRequest не має responseJSON
властивостей, просто responseText
і responseXML
. Поки bitly дійсно відповідає на ваш запит деяким JSON, responseText
повинен містити код JSON як текст, тому все, що вам потрібно зробити, це проаналізувати його JSON.parse()
:
var req = new XMLHttpRequest();
req.overrideMimeType("application/json");
req.open('GET', url, true);
req.onload = function() {
var jsonResponse = JSON.parse(req.responseText);
// do something with jsonResponse
};
req.send(null);
Сумісність: Цей підхід повинен працювати з будь-яким браузером, який підтримує XMLHttpRequest
таJSON
.
JSONHttpRequest
Якщо ви віддаєте перевагу використанню responseJSON
, але хочете більш легке рішення, ніж JQuery, ви можете перевірити мій JSONHttpRequest. Він працює точно так само, як звичайний XMLHttpRequest, але також надає responseJSON
властивість. Все, що вам потрібно змінити у коді, буде перший рядок:
var req = new JSONHttpRequest();
JSONHttpRequest також надає функціональність для легкої надсилання об'єктів JavaScript як JSON. Детальніше та код можна знайти тут: http://pixelsvsbytes.com/2011/12/teach-your-xmlhttprequest-some-json/ .
Повна інформація: Я є власником пікселів | байтів. Я думаю, що мій сценарій є гарним рішенням проблеми, тому я розмістив його тут. Будь ласка, залиште коментар, якщо ви хочете, щоб я видалив посилання.
XMLHttpRequest
; саме про те, про яке питання йшлося.