Нові способи я: 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; саме про те, про яке питання йшлося.