Nowe sposoby I: fetch
TL; DR ja polecam ten sposób tak długo, jak nie masz wysłać synchronicznych żądań lub wsparcia starych przeglądarek.
Dopóki twoje żądanie jest asynchroniczne, możesz użyć Fetch API do wysyłania żądań HTTP. Interfejs API pobierania działa z promises, co jest dobrym sposobem na obsługę asynchronicznych przepływów pracy w JavaScript. Dzięki takiemu podejściu użyć fetch()
wysłać wniosek i ResponseBody.json()
do analizowania odpowiedzi:
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(jsonResponse) {
// do something with jsonResponse
});
Kompatybilność: Fetch API nie jest obsługiwany przez IE11 oraz krawędzi 12 & 13. Jednakże istnieją polyfills.
Nowe sposoby II: responseType
Jak Londeren została napisana w his answer nowsze przeglądarek pozwalają użyć właściwości responseType
zdefiniować oczekiwany format odpowiedzi. Przeanalizowane dane reakcji można następnie uzyskać za pośrednictwem właściwości 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);
Kompatybilność: responseType = 'json'
nie jest obsługiwany przez IE11.
Klasycznym sposobem
Standardowa XMLHttpRequest ma responseJSON
własność, tylko responseText
i responseXML
. Dopóki bitly naprawdę reaguje z pewnym JSON do Państwa potrzeb, responseText
powinna zawierać kod JSON jako tekst, więc wszystko co masz zrobić, to do analizowania go 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);
Kompatybilność: Podejście to powinno działa z każdą przeglądarką obsługującą XMLHttpRequest
i JSON
.
JSONHttpRequest
Jeśli wolisz używać responseJSON
, ale chcesz bardziej lekkie rozwiązanie niż JQuery, może chcesz sprawdzić moje JSONHttpRequest. Działa dokładnie tak, jak normalne XMLHttpRequest, ale także zapewnia właściwość responseJSON
. Wszystko, co trzeba zmienić w kodzie byłaby pierwsza linia:
var req = new JSONHttpRequest();
JSONHttpRequest zapewnia również funkcjonalność łatwo wysyłać obiektów JavaScript jak JSON. Więcej szczegółów i kod można znaleźć tutaj: http://pixelsvsbytes.com/2011/12/teach-your-xmlhttprequest-some-json/.
Pełne ujawnienie: Jestem właścicielem Pixels | Bytes. Myślę, że mój skrypt jest dobrym rozwiązaniem problemu, dlatego opublikowałem go tutaj. Proszę zostaw komentarz, jeśli chcesz, żebym usunął link.
pixelsvsbytes.com to naprawdę warto przeczytać – CapelliC
+1; IMO to była prawdziwa odpowiedź na pytanie - brak jQuery to zwykły stary vanilla '' 'XMLHttpRequest'''; właśnie o co chodziło. –
Istnieje również wersja jquery. Jeśli masz problem z crossbrowser, spróbuj tego lepiej: http://api.jquery.com/jquery.parsejson/ – sagits