XML DOM - Objek XMLHttpRequest
- Halaman Sebelumnya DOM Text
- Halaman Berikutnya DOM XMLSerializer
Objek XMLHttpRequest
Objek XMLHttpRequest menyediakan akses penuh ke protokol HTTP, termasuk kemampuan untuk membuat permintaan POST dan HEAD serta permintaan GET biasa. XMLHttpRequest dapat mengembalikan tanggapan dari server Web secara sinkron atau asinkron, dan dapat mengembalikan konten dalam bentuk teks atau dokumen DOM.
walaupun dinamai XMLHttpRequest, ia tidak terbatas digunakan bersamaan dengan dokumen XML: ia dapat menerima berbagai bentuk dokumen teks.
objek XMLHttpRequest adalah yang dinamai AJAX sebagai fitur kunci dari arsitektur aplikasi Web.
dukungan browser
XMLHttpRequest mendapatkan dukungan yang baik dari seluruh browser modern. Dependensi browser yang disyaratkan hanya untuk pembuatan objek XMLHttpRequest. Pada IE 5 dan IE 6, harus menggunakan konstruktur ActiveXObject() khusus IE. Seperti yang disebutkan di Objek XMLHttpRequest yang disebutkan di bagian ini.
Standardisasi W3C
Objek XMLHttpRequest belum standarisasi, tetapi W3C telah memulai kerja standarisasi, konten yang disebutkan di buku ini berdasarkan rancangan kerja standarisasi.
Realisasi saat ini XMLHttpRequest cukup serupa. Tetapi ada perbedaan kecil dengan standar. Misalnya, satu realisasi dapat mengembalikan null, sementara standar meminta string kosong, atau realisasi dapat mengatur readyState menjadi 3 tanpa menjamin bahwa semua header tanggapan tersedia.
Properti
readyState
Status permintaan HTTP. Saat XMLHttpRequest pertama kali dibuat, nilai properti ini mulai dari 0, sampai menerima tanggapan HTTP yang penuh, nilai ini bertambah hingga 4.
Setiap satu dari 5 status memiliki nama yang tidak resmi yang berhubungan, tabel di bawah ini menampilkan status, nama, dan arti:
Status | Nama | Deskripsi |
---|---|---|
0 | Uninitialized | Status awal. Objek XMLHttpRequest telah dibuat atau telah direset dengan method abort(). |
1 | Open | Method open() telah dipanggil, tetapi method send() belum dipanggil. Permintaan belum dikirim. |
2 | Sent | Method Send() telah dipanggil, permintaan HTTP telah dikirim ke server Web. Belum menerima tanggapan. |
3 | Receiving | Seluruh header tanggapan telah diterima. Badan tanggapan mulai diterima tetapi belum selesai. |
4 | Loaded | Respon HTTP telah sepenuhnya diterima. |
Nilai readyState tidak akan menurun kecuali saat method abort() atau open() dipanggil selama permintaan dalam proses pengolahan. Setiap kali nilai properti ini bertambah, akan diaktifkan handler peristiwa onreadystatechange.
responseText
Sampai saat ini badan tanggapan yang diterima server (tidak termasuk header), atau jika belum menerima data, adalah string kosong.
Jika readyState kurang dari 3, properti ini adalah string kosong. Saat readyState 3, properti ini mengembalikan bagian tanggapan yang telah diterima saat ini. Jika readyState 4, properti ini menyimpan badan tanggapan yang penuh.
Jika tanggapan mengandung header penyetaraan karakter untuk badan tanggapan, gunakan pengkodean yang disebutkan. Jika tidak, diassumsi digunakan Unicode UTF-8.
responseXML
Tanggapan permintaan, diurai menjadi XML dan sebagai Objek Documentkembali.
status
yang dikembalikan oleh server Kode status HTTP, seperti 200 untuk sukses, dan 404 untuk kesalahan "Not Found". Membaca atribut ini saat readyState kurang dari 3 akan menyebabkan gangguan.
statusText
Properti ini menentukan kode status HTTP permintaan dengan nama daripada angka. Arti adalah, ketika status adalah 200, ia adalah "OK", ketika status adalah 404, ia adalah "Not Found". Seperti atribut status, membaca atribut ini saat readyState kurang dari 3 akan menyebabkan gangguan.
Penanganan peristiwa
onreadystatechange
Fungsi penanganan peristiwa yang dipanggil saat atribut readyState berubah. Ketika readyState adalah 3, ia mungkin juga dipanggil beberapa kali.
Metode
abort()
Batalkan tanggapan saat ini, tutup koneksi dan mengakhiri semua aktivitas jaringan yang berjalan.
Metode ini mengatur kembali objek XMLHttpRequest ke status readyState 0 dan membatalkan semua aktivitas jaringan yang berjalan. Misalnya, jika permintaan memakan waktu terlalu lama dan tanggapan tidak lagi diperlukan, dapat dipanggil metode ini.
getAllResponseHeaders()
Kembalikan header permintaan HTTP sebagai string yang belum diurai.
Jika readyState kurang dari 3, metode ini mengembalikan null. Jika tidak, ia mengembalikan semua header permintaan HTTP yang dikirimkan server. Header kembalikan sebagai string yang belum diurai, satu header per baris. Setiap baris dipisahkan dengan karakter enter "\r\n".
getResponseHeader()
Kembalikan nilai header permintaan HTTP yang ditentukan. Parameter adalah nama header permintaan HTTP yang akan dikembalikan. Dapat digunakan apapun besarnya huruf untuk menentukan nama header, dan penilaian dengan header tanggung jawab tak membedakan huruf besar dan kecil.
Nilai kembalian metode ini adalah nilai header HTTP yang ditentukan, jika tidak menerima header ini atau readyState kurang dari 3, maka string kosong. Jika menerima beberapa header dengan nama yang ditentukan, nilai header dihubungkan dan dikembalikan, dipisahkan nilai header masing-masing dengan koma dan spasi.
open()
Inisialisasi parameter permintaan HTTP, seperti URL dan metode HTTP, tetapi tidak mengirim permintaan.
send()
Kirim permintaan HTTP, menggunakan parameter yang disampaikan ke metode open() serta badan permintaan opsional yang disampaikan ke metode ini.
setRequestHeader()
Atur atau tambahkan permintaan HTTP ke permintaan yang terbuka tetapi belum dikirimkan.
XMLHttpRequest.open()
Menginisialisasi parameter permintaan HTTP
Syarat
open(method, url, async, username, password)
Parameter method adalah metode HTTP yang digunakan untuk permintaan. Nilainya termasuk GET, POST, dan HEAD.
Parameter url adalah subjek permintaan. Sebagian besar peramban melaksanakan strategi keamanan sumber yang sama dan meminta URL ini memiliki nama host dan port yang sama dengan teks yang mengandung skrip.
Parameter async menunjukkan permintaan harus dieksekusi secara asinkron. Jika parameter ini adalah false, permintaan adalah sinkron, pemanggilan send() berikutnya akan dihalangi sampai tanggapan sepenuhnya diterima. Jika parameter ini adalah true atau diabaikan, permintaan adalah asinkron, dan biasanya memerlukan penanganan acara onreadystatechange.
Parameter username dan password adalah opsional, memberikan kualifikasi autentikasi untuk otorisasi yang diperlukan oleh url. Jika disebutkan, mereka akan menimpa kualifikasi yang disebutkan di url sendiri.
Pengeluh
Metode ini menginisialisasi parameter permintaan untuk digunakan oleh metode send() nanti. Dia mengatur readyState menjadi 1, menghapus semua header permintaan yang disebutkan sebelumnya, serta semua header tanggapan yang telah direspon, dan mengatur parameter responseText, responseXML, status, serta statusText ke nilai standar mereka. Metode ini adalah aman untuk dipanggil ketika readyState adalah 0 (ketika objek XMLHttpRequest baru dibuat atau method abort() dipanggil) serta ketika readyState adalah 4 (sudah menerima tanggapan). Ketika dipanggil untuk semua status lain, perilaku metode open() disesuaikan.
Selain menyimpan parameter permintaan untuk digunakan dalam metode send(), serta mengatur ulang objek XMLHttpRequest untuk penggunaan ulang, metode open() tidak memiliki perilaku lain. Harap dicatat bahwa ketika metode ini dipanggil, implementasi biasanya tidak membuka koneksi jaringan ke server web.
XMLHttpRequest.send()
Mengirim permintaan HTTP
Syarat
send(body)
Jika metode HTTP yang ditentukan melalui pemanggilan open() adalah POST atau PUT, parameter body menentukan badan permintaan, sebagai string atau Objek DocumentJika parameter ini bukan wajib, maka nilai parameter ini adalah null. Untuk semua metode lain, parameter ini tidak tersedia, dan harus berupa null (beberapa implementasi tidak mengijinkan penghapusan parameter ini).
Pengeluh
Metode ini menyebabkan permintaan HTTP dikirimkan. Jikabelumnya belum dipanggil open() atau lebih spesifik, jika.readyState bukan 1, send() melempar eksepsi. Jika bukan, ia mengirimkan permintaan HTTP, yang terdiri dari beberapa bagian berikut:
- Metode HTTP, URL, dan kualifikasi autentikasi yang ditentukan sebelumnya dalam pemanggilan open() (jika ada).
- Header permintaan yang ditentukan sebelumnya dalam pemanggilan setRequestHeader() (jika ada).
- Dipasang ke metode ini Body Parameter.
Sekali permintaan di publikasikan, send() mengatur.readyState menjadi 2 dan memicu penangkapan peristiwa onreadystatechange.
Jika parameter async yang dipanggil sebelumnya open() adalah false, metode ini akan menahan dan tidak kembali, sampai.readyState adalah 4 dan tanggapan server penuh sudah diterima. Jika parameter async adalah true, atau parameter ini dilewatkan, send() segera kembali, dan seperti yang disebutkan di belakang, tanggapan server akan ditangani di jalur latar belakang.
Jika tanggapan server mempunyai HTTP pengalihan, metode send() atau jalur latar belakang otomatis mengikuti pengalihan. Saat semua header tanggapan HTTP sudah diterima, send() atau jalur latar belakang mengatur.readyState menjadi 3 dan memicu penangkapan peristiwa onreadystatechange. Jika tanggapan panjang, send() atau jalur latar belakang mungkin memicu penangkapan peristiwa onreadystatechange di status 3: ini dapat digunakan sebagai indikator proses pengunduhan. Akhirnya, saat tanggapan selesai, send() atau jalur latar belakang mengatur.readyState menjadi 4 dan memicu penangkapan peristiwa untuk yang terakhir kalinya.
XMLHttpRequest.setRequestHeader()
Syarat
setRequestHeader(name, value)
Parameter name adalah nama header yang akan disetel. Parameter ini seharusnya tidak termasuk spasi, tanda titik koma, atau baris kosong.
Parameter value adalah nilai header. Parameter ini seharusnya tidak termasuk baris kosong.
Pengeluh
Metode setRequestHeader() menentukan header permintaan HTTP, yang seharusnya disertakan dalam permintaan yang di publikasikan melalui panggilan send() berikutnya. Metode ini hanya dapat dipanggil saat.readyState adalah 1, seperti setelah memanggil open(), tetapi sebelum memanggil send().
Jika header dengan nama yang ditentukan sudah ditetapkan, nilai baru header ini adalah: nilai yang ditentukan sebelumnya, ditambahkan koma, spasi, dan nilai yang ditentukan dalam pemanggilan ini.
Jika pemanggilan open() menentukan kualifikasi autentikasi, XMLHttpRequest secara otomatis mengirimkan header permintaan Authorization yang sesuai. Namun, kamu dapat menggunakan setRequestHeader() untuk menambahkan header ini. Secara serupa, jika server web sudah menyimpan dan mentransfer cookie yang berhubungan dengan URL yang diberikan ke open(), header Cookie atau Cookie2 yang sesuai akan otomatis disertakan di permintaan. Cookie ini dapat ditambahkan ke header melalui pemanggilan setRequestHeader(). XMLHttpRequest juga dapat menyediakan nilai default untuk header User-Agent. Jika dia melakukan hal ini, nilai yang kamu tentukan untuk header ini akan ditambahkan di belakang nilai default ini.
Beberapa header permintaan diset secara otomatis oleh XMLHttpRequest daripada dengan metode ini, untuk memenuhi protokol HTTP. Ini termasuk beberapa header yang berhubungan dengan proksi:
- Host
- Connection
- Keep-Alive
- Accept-charset
- Accept-Encoding
- If-Modified-Since
- If-None-Match
- If-Range
- Range
- Halaman Sebelumnya DOM Text
- Halaman Berikutnya DOM XMLSerializer