Cara baru saya: fetch
TL; DR Saya akan merekomendasikan cara ini selama Anda tidak perlu mengirim permintaan sinkron atau mendukung browser lama.
Selama permintaan Anda asinkron, Anda dapat menggunakan Fetch API untuk mengirim permintaan HTTP. Fetch API bekerja dengan promise , yang merupakan cara bagus untuk menangani alur kerja asinkron di JavaScript. Dengan pendekatan ini yang Anda gunakan fetch()untuk mengirim permintaan dan ResponseBody.json()mengurai respons:
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(jsonResponse) {
// do something with jsonResponse
});
Kompatibilitas: Fetch API tidak didukung oleh IE11 serta Edge 12 & 13. Namun, ada polyfill .
Cara baru II: responseType
Seperti yang ditulis Londeren dalam jawabannya , browser yang lebih baru memungkinkan Anda menggunakan responseTypeproperti untuk menentukan format respons yang diharapkan. Data respons yang diurai kemudian dapat diakses melalui responseproperti:
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);
Kompatibilitas: responseType = 'json'tidak didukung oleh IE11.
Cara klasik
XMLHttpRequest standar tidak memiliki responseJSONproperti, hanya responseTextdan responseXML. Selama bitly benar-benar merespons dengan beberapa JSON untuk permintaan Anda, responseTextharus berisi kode JSON sebagai teks, jadi yang harus Anda lakukan hanyalah menguraikannya dengan 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);
Kompatibilitas: Pendekatan ini dapat digunakan dengan browser apa pun yang mendukung XMLHttpRequestdan JSON.
JSONHttpRequest
Jika Anda lebih suka menggunakan responseJSON, tetapi menginginkan solusi yang lebih ringan daripada JQuery, Anda mungkin ingin memeriksa JSONHttpRequest saya. Ia bekerja persis seperti XMLHttpRequest normal, tetapi juga menyediakan responseJSONproperti. Yang harus Anda ubah dalam kode Anda adalah baris pertama:
var req = new JSONHttpRequest();
JSONHttpRequest juga menyediakan fungsionalitas untuk mengirim objek JavaScript dengan mudah sebagai JSON. Detail selengkapnya dan kodenya dapat ditemukan di sini: http://pixelsvsbytes.com/2011/12/teach-your-xmlhttprequest-some-json/ .
Pengungkapan penuh: Saya adalah pemilik Pixels | Bytes. Saya pikir skrip saya adalah solusi yang baik untuk masalah ini, jadi saya mempostingnya di sini. Silakan tinggalkan komentar, jika Anda ingin saya menghapus tautannya.
XMLHttpRequest; tentang apa pertanyaan itu.