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 responseType
Eigenschaft verwenden, um das erwartete Format der Antwort zu definieren. Auf die analysierten Antwortdaten kann dann über die response
Eigenschaft 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 responseJSON
Eigenschaft, nur responseText
und responseXML
. Solange bitly wirklich mit etwas JSON auf Ihre Anfrage antwortet, responseText
sollte 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 XMLHttpRequest
und 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 responseJSON
Eigenschaft 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.