Neue Wege I: fetch
TL; DR Ich würde diesen Weg empfehlen, solange Sie keine synchronen Anfragen senden oder alte Browser unterstützen müssen.
Solange Ihre Anfrage asynchron ist, können Sie die Fetch-API verwenden , um HTTP-Anfragen zu senden. Die Abruf-API arbeitet mit Versprechungen . Dies ist eine gute Möglichkeit, asynchrone Workflows in JavaScript zu verarbeiten. Mit diesem Ansatz fetch()senden Sie eine Anfrage und ResponseBody.json()analysieren die Antwort:
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(jsonResponse) {
// do something with jsonResponse
});
Kompatibilität: Die Fetch-API wird von IE11 sowie Edge 12 und 13 nicht unterstützt. Es gibt jedoch Polyfills .
Neue Wege II: responseType
Wie Londeren in seiner Antwort geschrieben hat , können Sie mit neueren Browsern die responseTypeEigenschaft verwenden, um das erwartete Format der Antwort zu definieren. Auf die analysierten Antwortdaten kann dann über die responseEigenschaft zugegriffen werden :
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);
Kompatibilität: responseType = 'json'wird von IE11 nicht unterstützt.
Der klassische Weg
Die Standard-XMLHttpRequest hat keine responseJSONEigenschaft, nur responseTextund responseXML. Solange bitly wirklich mit etwas JSON auf Ihre Anfrage antwortet, responseTextsollte der JSON-Code als Text enthalten sein. Alles, was Sie tun müssen, ist ihn zu analysieren mit 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);
Kompatibilität: Dieser Ansatz sollte mit jedem Browser funktionieren, der XMLHttpRequestund unterstützt JSON.
JSONHttpRequest
Wenn Sie es vorziehen responseJSON, eine leichtere Lösung als JQuery zu verwenden, sollten Sie sich meine JSONHttpRequest ansehen. Es funktioniert genau wie eine normale XMLHttpRequest, stellt jedoch auch die responseJSONEigenschaft bereit . Alles, was Sie in Ihrem Code ändern müssen, wäre die erste Zeile:
var req = new JSONHttpRequest();
JSONHttpRequest bietet auch Funktionen zum einfachen Senden von JavaScript-Objekten als JSON. Weitere Details und den Code finden Sie hier: http://pixelsvsbytes.com/2011/12/teach-your-xmlhttprequest-some-json/ .
Vollständige Offenlegung: Ich bin der Eigentümer von Pixels | Bytes. Ich denke, mein Skript ist eine gute Lösung für das Problem, deshalb habe ich es hier gepostet. Bitte hinterlassen Sie einen Kommentar, wenn ich den Link entfernen soll.
XMLHttpRequest; genau darum ging es bei der Frage.