AJAX - XMLHttpRequest
- Hal Sebelumnya XMLHttp AJAX
- Hal Berikutnya Respon AJAX
Objek XMLHttpRequest digunakan untuk menghantarkan data dengan server.
Kirim permintaan ke server
Untuk mengirim permintaan ke server, kami menggunakan objek XMLHttpRequest: open()
dan send()
Metode:
xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
Metode | Deskripsi |
---|---|
open(method, url, async) |
Tentukan tipe permintaan
|
send() | Kirim permintaan ke server (digunakan untuk GET) |
send(string) | Kirim permintaan ke server (digunakan untuk POST) |
GET atau POST?
GET lebih mudah dan cepat daripada POST, dan dapat digunakan di sebagian besar situasi.
Namun, selalu gunakan POST di berbagai situasi berikut:
- Berkas cache bukan opsi (update berkas atau database di server)
- Kirim data besar ke server (tidak ada batas ukuran untuk POST)
- Kirim input pengguna (dapat mengandung karakter yang tak dikenal), POST lebih kuat dan aman daripada GET
Permintaan GET
Permintaan GET sederhana:
Contoh
xhttp.open("GET", "demo_get.asp", true); xhttp.send();
Dalam contoh di atas, Anda mungkin mendapatkan hasil yang disimpan di cache. Untuk menghindari hal ini, tambahkan ID yang unik ke URL:
Contoh
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true); xhttp.send();
Jika Anda ingin mengirimkan informasi menggunakan metode GET, tambahkan informasi ini ke URL:
Contoh
xhttp.open("GET", "demo_get2.asp?fname=Bill&lname=Gates", true); xhttp.send();
Permintaan POST
Permintaan POST sederhana:
Contoh
xhttp.open("POST", "demo_post.asp", true); xhttp.send();
Jika ingin mengirim data seperti formulir HTML, melalui: setRequestHeader()
Tambahkan header HTTP. Silakan di: send()
Aturan dalam metode ini adalah data yang harus dikirimkan:
Contoh
xhttp.open("POST", "ajax_test.asp", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("fname=Bill&lname=Gates");
Metode | Deskripsi |
---|---|
setRequestHeader(header, value) |
Menambahkan header HTTP ke permintaan
|
url - Berkas di server
metode open() url parameter, adalah alamat berkas di server:
xhttp.open("GET", "ajax_test.asp", true);
Berkas ini dapat berupa berbagai jenis berkas, seperti .txt dan .xml, atau berkas skrip server, seperti .asp dan .php (mereka dapat dijalankan di server sebelum mengirim tanggapan).
Asinkron - true atau false?
Jika ingin mengirim permintaan asinkron:open()
metode async parameter harus diatur sebagai true
:
xhttp.open("GET", "ajax_test.asp", true);
Pengiriman permintaan asinkron adalah kemajuan besar bagi para pengembang web. Banyak tugas yang dijalankan di server sangat lama. Sebelum AJAX, operasi ini dapat menyebabkan aplikasi hengkang atau berhenti.
Dengan pengiriman asinkron, JavaScript tidak perlu menunggu tanggapan server, melainkan dapat:
- Melaksanakan skrip lain saat menunggu tanggapan server
- Menangani tanggapan saat tanggapan siap
Properti onreadystatechange
Dengan objek XMLHttpRequest, Anda dapat mendefinisikan fungsi yang akan dieksekusi saat permintaan menerima tanggapan.
Fungsi ini berada di dalam objek XMLHttpResponse onreadystatechange
yang didefinisikan dalam properti:
Contoh
xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
Anda akan belajar lebih banyak tentang onreadystatechange di bab mendatang.
Permintaan sinkron
Jika ingin melaksanakan permintaan sinkron, silakan buat open()
Parameter ketiga di dalam method diatur untuk false
:
xhttp.open("GET", "ajax_info.txt", false);
Kadang-kadang async = false digunakan untuk pengujian cepat. Anda juga akan melihat permintaan sinkron di kode JavaScript yang lebih lama.
Karena kode akan menunggu penyelesaian server, jadi tidak perlu fungsi onreadystatechange:
Contoh
xhttp.open("GET", "ajax_info.txt", false); xhttp.send(); document.getElementById("demo").innerHTML = xhttp.responseText;
Kami tidak menyarankan XMLHttpRequest sinkron (async = false), karena JavaScript akan berhenti eksekusi sampai tanggapan server siap. Jika server sibuk atau lambat, aplikasi akan terhenti atau berhenti.
XMLHttpRequest sinkron sedang dipindahkan dari Standar Web, tetapi proses ini mungkin memerlukan berbagai tahun.
Alat pengembangan modern disarankan untuk memberikan peringatan tentang permintaan sinkron, dan mungkin akan mengeksperimen dengan eksepsi InvalidAccessError ketika hal ini terjadi.
- Hal Sebelumnya XMLHttp AJAX
- Hal Berikutnya Respon AJAX