Kita bisa bisa melihat proses AJAX melalui inspect elemen di web browser, lalu buka tab Network dan aktifkan filter XHR [XML HTTP Request].
Oh iya, meskipun di AJAX ada kata “XML”… Bukan berarti hanya mendukung format XML saja.
AJAX juga mendukung format JSON, Plain Text, dan HTML.
Cara Menggunakan Ajax di Javascript
Langkah-langkah menggunakan AJAX seperti ini:
Membuat Objek Ajax
var xhr = new XMLHttpRequest[];
Menentukan Fungsi Handler untuk Event
xhr.onreadystatechange = function[] { ... }; xhr.onload = function[] { ... }; xhr.onerror = function[] { ... }; xhr.onprogress = function[] { ... };
Menentukan Method dan URL
xhr.open["GET", url, true];
Mengirim Request
xhr.send[];
Oke…
Mari kita coba.
Buatlah file HTML dengan isi sebagai berikut:
Belajar Dasar Ajax
Tutorial Ajax
Load Content
function loadContent[]{
var xhr = new XMLHttpRequest[];
var url = "//api.github.com/users/petanikode";
xhr.onreadystatechange = function[]{
if[this.readyState == 4 && this.status == 200]{
document.getElementById["hasil"].innerHTML = this.responseText;
}
};
xhr.open["GET", url, true];
xhr.send[];
}
Hasilnya:
Pada contoh di atas, kita mengambil data dari server Github dengan methode GET. Lalu hasilnya langsung dimasukan ke dalam elemn
xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
9.Event yang kita gunakan adalah
xhr.open["GET", url, true];
0, pada event ini kita bisa mengecek state dan status AJAX.if[this.readyState == 4 && this.status == 200]{
//...
}
Kode state
xhr.open["GET", url, true];
1 artinya done dan status xhr.open["GET", url, true];
2 artinya sukses. Berikut ini daftar kode state AJAX.KodeStateKeterangan0UNSENTObjek AAJAX sudah dibuat tapi belum memanggil method xhr.open["GET", url, true];
3.1OPENEDMethod xhr.open["GET", url, true];
3 sudah dipanggil.2HEADERS_RECEIVEDMethod xhr.open["GET", url, true];
5 sudah dipanggil, dan di sini sudah tersedia header status.3LOADINGDownloading; sedang mendownload data.4DONEOperasi AJAX selesai.Sementara untuk status header
xhr.open["GET", url, true];
2 adalah status HTTP Request. Biasanya kode di atas xhr.open["GET", url, true];
2 artinya baik dan di bawah xhr.open["GET", url, true];
2 artinya buruk.Lalu coba perhatikan kode ini:
xhr.open["GET", url, true];
Terdapat tiga parameter yang kita berikan kepada method
xhr.open["GET", url, true];
3:
0 adalah metode request yang akan digunakan;xhr.send[];
1 adalah alamat URL tujuan;xhr.send[];
2 adalah untuk mengeksekusi AJAX secara asynchronous.xhr.send[];
Mari kita lanjutkan dengan contoh yang lainnya. Silahkan ubah isi file HTML yang tadi menjadi seperti ini:
Belajar Dasar Ajax
Tutorial Ajax Clear
Load Content
function loadContent[] {
var xhr = new XMLHttpRequest[];
var url = "//api.github.com/users/petanikode";
xhr.onloadstart = function [] {
document.getElementById["button"].innerHTML = "Loading...";
}
xhr.onerror = function [] {
alert["Gagal mengambil data"];
};
xhr.onloadend = function [] {
if [this.responseText !== ""] {
var data = JSON.parse[this.responseText];
var img = document.createElement["img"];
img.src = data.avatar_url;
var name = document.createElement["h3"];
name.innerHTML = data.name;
document.getElementById["hasil"].append[img, name];
document.getElementById["button"].innerHTML = "Done";
setTimeout[function [] {
document.getElementById["button"].innerHTML = "Load Lagi";
}, 3000];
}
};
xhr.open["GET", url, true];
xhr.send[];
}
function clearResult[] {
document.getElementById["hasil"].innerHTML = "";
}
Hasilnya:
Mengirim Data ke Server dengan AJAX
Belajar Dasar Ajax
Kirim Data dengan Ajax
Title
Isi Artikel
function sendData[] {
var xhr = new XMLHttpRequest[];
var url = "//jsonplaceholder.typicode.com/posts";
var data = JSON.stringify[{
title: document.getElementById["title"].value,
body: document.getElementById["body"].value,
userId: 1
}];
xhr.open["POST", url, true];
xhr.setRequestHeader["Content-Type", "application/json;charset=UTF-8"];
xhr.onload = function [] {
console.log [this.responseText];
};
xhr.send[data];
return false;
}
Hasilnya:
Pengiriman data tersebut hanya untuk simulasi. Data tidak benar-benar akan terkirim ke server //jsonplaceholder.typicode.com/posts.
AJAX Menggunakan JQuery
JQuery adalah library Javascript yang menyederhanakan fungsi-fungsi Javascript. Pada JQuery, AJAX dapat dibuat seperti ini:
// load data ke elemen tertentu via AJAX
$[selector].load[URL,data,callback];
// ambil data dari server
$.get[URL,callback];
// kirim data dari Server
$.post[URL,data,callback];
Mari kita coba…
Buatlah file baru bernama
xhr.send[];
3 lalu isi dengan kode berikut:xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
0Hasilnya:
Dengan fungsi
xhr.send[];
4, kita bisa mengambil data dengan AJAX dan langsung menampilkannya pada elemen yang dipilih.Fungsi JQuery
xhr.send[];
5 cocoknya untuk mengambil bagian dari HTML untuk ditampilkan.Contoh lainnya menggunakan metode GET:
xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
1Hasilnya:
Nah untuk mengirim data dengan AJAX di JQuery, caranya hampir sama seperti mengambil data dengan
xhr.send[];
6.xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
2AJAX Menggunakan Fetch API
Fetch artinya mengambil. Metode fetch bisa jadi alternatif untuk AJAX.
Methode ini mulai hadir pada Javascript versi ES6.
Perbedaanya dengan
xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
8 dan JQuery adalah:- Fetch akan mengembalikan sebuah promise;
- Secara bawaan [default], fetch tidak akan mengirim atau menerima cookie dari server.
- Fetch dapat digunakan di web browser dan juga Nodejs dengan modul
8.xhr.send[];
Berikut ini sintak dasar penggunaan Fetch.
xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
3Dan untuk pengiriman data dengan metode POST, bentuknya seperti ini:
xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
4Mari kita coba…
Berikut ini contoh pengambilan data menggunakan fetch:
xhr.onreadystatechange = function[] { ... };
xhr.onload = function[] { ... };
xhr.onerror = function[] { ... };
xhr.onprogress = function[] { ... };
5Hasilnya:
Ajax Menggunakan Axios
Axios hampir sama seperti fetch. Bedanya Axios adalah sebuah library sedangkan fetch adalah API yang tersedia di web browser.