XML DOM - Objek XMLHttpRequest
- Halaman Sebelumnya DOM Text
- Halaman Berikutnya DOM XMLSerializer
Objek XMLHttpRequest
Objek XMLHttpRequest menyediakan akses penuh ke protokol HTTP, termasuk keupayaan untuk membuat permintaan POST dan HEAD serta permintaan GET biasa. XMLHttpRequest boleh mengembalikan respons pelayar web secara sinkron atau asinkron, dan dapat mengembalikan kandungan dalam bentuk teks atau dokumen DOM.
Walaupun dinamakan XMLHttpRequest, ia bukan untuk digunakan bersama-sama dengan dokumen XML: ia boleh menerima mana-mana bentuk dokumen teks.
objek XMLHttpRequest yang dinamakan AJAX sebagai fungsi penting dalam arhitektur aplikasi Web.
sokongan pelayar
XMLHttpRequest mendapat sokongan yang baik daripada semua pelayar modern. Taburan kewajiban pelayar hanya melibatkan penghasilan objek XMLHttpRequest. Dalam IE 5 dan IE 6, perlu menggunakan konstruktur ActiveXObject() khusus IE. Seperti yang ditunjukkan dalam Objek XMLHttpRequest Bagian ini dijelaskan.
Standardisasi W3C
Objek XMLHttpRequest belum disepadankan, tetapi W3C telah memulai kerja standarisasi, konten buku ini berdasarkan rancangan kerja standarisasi.
Implementasi saat ini XMLHttpRequest sudah cukup serupa. Tetapi ada perbedaan kecil dengan standar. Contohnya, satu implementasi mungkin mengembalikan null, sementara standar meminta string kosong, atau implementasi mungkin mengatur readyState menjadi 3 tanpa memastikan semua header respons tersedia.
Properti
readyState
Status permintaan HTTP. Saat XMLHttpRequest pertama kali dibuat, nilai properti ini mulai dari 0, hingga menerima respons HTTP penuh, nilai ini bertambah hingga 4.
Setiap satu dari lima status memiliki nama tidak resmi yang berhubungan, tabel di bawah menampilkan status, nama, dan arti:
Status | Nama | Deskripsi |
---|---|---|
0 | Uninitialized | Status awal. Objek XMLHttpRequest telah dibuat atau 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 respons. |
3 | Receiving | Seluruh header respons telah menerima. Mulai menerima badan respons tetapi belum selesai. |
4 | Loaded | Respons HTTP telah sepenuhnya menerima. |
Nilai readyState tidak akan menurun kecuali saat method abort() atau open() dipanggil selama proses permintaan. Setiap kali nilai properti ini bertambah, akan diaktifkan handler peristiwa onreadystatechange.
responseText
Hingga kini badan respons yang telah menerima pengirim untuk 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 respons yang telah menerima. Jika readyState 4, properti ini menyimpan badan respons penuh.
Jika respons terdapat header penyangkalan karakter encoding untuk badan respons, gunakan pengkodean ini. Jika tidak, asumsikan digunakan Unicode UTF-8.
responseXML
Penghantaran permintaan, diurai menjadi XML dan digunakan sebagai Objek Dokumentdikembalikan.
status
yang diembalikan 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 eksepsi.
statusText
Atribut ini menentukan status HTTP permintaan dengan nama daripada angka. Arti adalah, ketika status adalah 200, ia adalah "OK", dan ketika status adalah 404, ia adalah "Not Found". Seperti atribut status, membaca atribut ini saat readyState kurang dari 3 akan menyebabkan eksepsi.
Handler acara
onreadystatechange
Fungsi handler acara yang dipanggil setiap kali atribut readyState berubah. Ketika readyState adalah 3, ia mungkin dipanggil beberapa kali.
Method
abort()
Batalkan tanggapan saat ini, tutup koneksi dan mengakhiri semua aktivitas jaringan yang berjalan.
Method ini mengatur kembali objek XMLHttpRequest ke status readyState 0 dan membatalkan semua aktivitas jaringan yang berjalan. Misalnya, jika permintaan mengambil waktu yang lama dan tanggapan tidak lagi diperlukan, method ini dapat dipanggil.
getAllResponseHeaders()
Kembalikan header tanggapan HTTP sebagai string yang belum diurai.
Jika readyState kurang dari 3, method ini mengembalikan null. Jika tidak, ia mengembalikan semua header tanggapan HTTP yang dikirimkan server. Header dikembalikan sebagai string yang belum diurai, baris per baris. Setiap baris dipisahkan dengan karakter baris baru "\r\n".
getResponseHeader()
Kembalikan nilai header permintaan HTTP yang ditentukan. Parameter adalah nama header permintaan HTTP yang akan dikembalikan. Dapat digunakan apapun besar kecilnya untuk menentukan nama header, dan pembanding dengan header tanggapan tak membedakan besar kecil.
Nilai kembalian method ini adalah nilai header HTTP yang ditentukan, jika tidak menerima header ini atau readyState kurang dari 3, maka kosong. Jika menerima beberapa header dengan nama yang ditentukan, nilai header ini dihubungkan dan dikembalikan, dipisahkan nilai header masing-masing dengan koma dan spasi.
open()
Inisialisasi parameter permintaan HTTP, seperti URL dan method HTTP, tetapi tidak menghantar permintaan.
send()
Hantar permintaan HTTP, menggunakan parameter yang disampaikan kepada method open(), serta badan permintaan pilihan yang disampaikan kepada method ini.
setRequestHeader()
Tetapkan atau tambahkan permintaan HTTP kepada permintaan yang terbuka tetapi belum dihantar.
XMLHttpRequest.open()
Menginisialisasi parameter permintaan HTTP
Sintaks
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 domain dan port yang sama dengan teks yang mengandung skrip.
Parameter async menunjukkan permintaan harus dijalankan secara asynchronous. Jika parameter ini adalah false, permintaan adalah synchronous, pemanggilan send() berikutnya akan dihalangi sampai tanggapan sepenuhnya diterima. Jika parameter ini adalah true atau diabaikan, permintaan adalah asynchronous dan biasanya memerlukan penanganan peristiwa onreadystatechange.
Parameter username dan password adalah opsional dan menyediakan kualifikasi autentikasi untuk otorisasi url. Jika diset, mereka akan menimpa kualifikasi yang disediakan oleh url sendiri.
Pengertian
Metode ini menginisialisasi parameter permintaan untuk digunakan dalam metode send() nanti. Dia mengatur readyState menjadi 1, menghapus semua judul permintaan yang ditentukan sebelumnya, serta semua judul tanggapan yang diterima sebelumnya, dan mengatur parameter responseText, responseXML, status, serta statusText ke nilai standarnya. Metode ini aman untuk dipanggil ketika readyState adalah 0 (ketika objek XMLHttpRequest baru dibuat atau metode 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 menyiapkan objek XMLHttpRequest untuk penggunaan ulang, metode open() tidak memiliki perilaku lain. Harap dicatat, ketika metode ini dipanggil, implementasi biasanya tidak membuka koneksi jaringan ke server web.
XMLHttpRequest.send()
Mengirim permintaan HTTP
Sintaks
send(body)
Jika metode HTTP yang ditentukan melalui pemuatan open() adalah POST atau PUT, parameter badan permintaan ditentukan, sebagai string atau Objek DokumentJika permintaan badan tidak diperlukan, parameter ini akan diisi null. Untuk semua metode lain, parameter ini tidak tersedia dan seharusnya diisi null (beberapa implementasi tidak mengijinkan penghapusan parameter ini).
Pengertian
Metode ini menyebabkan permintaan HTTP dikirim. Jika sebelumnya belum dipanggil open() atau, yang lebih spesifik, jika.readyState bukan 1, send() melempar eksepsi. Jika tidak, ia mengirim permintaan HTTP yang terdiri dari beberapa bagian berikut:
- Metode HTTP, URL, dan kualifikasi autentikasi yang ditentukan saat memanggil open() sebelumnya (jika ada).
- Header permintaan yang ditentukan saat memanggil setRequestHeader() sebelumnya (jika ada).
- Dialami metode ini body Parameter.
Sekali permintaan dipublikasikan, send() mengatur.readyState menjadi 2 dan memicu penanganan peristiwa onreadystatechange.
Jika parameter async yang dipanggil sebelumnya open() adalah false, metode ini akan menghalangi dan tidak kembali, sampai.readyState menjadi 4 dan tanggapan server sepenuhnya diterima. Jika parameter async adalah true, atau parameter ini diabaikan, send() segera kembali, dan seperti yang disebutkan di belakang, tanggapan server akan diproses di jalur latar belakang.
Jika tanggapan server mengandung HTTP redireksi, metode send() atau jalur latar belakang otomatis mengikuti redireksi. Saat semua header tanggapan HTTP sudah diterima, send() atau jalur latar belakang mengatur.readyState menjadi 3 dan memicu penanganan peristiwa onreadystatechange. Jika tanggapan panjang, send() atau jalur latar belakang mungkin memicu penanganan peristiwa onreadystatechange di status 3: ini dapat digunakan sebagai indikator kemajuan download. Akhirnya, saat tanggapan selesai, send() atau jalur latar belakang mengatur.readyState menjadi 4 dan memicu penanganan peristiwa untuk yang terakhir kalinya.
XMLHttpRequest.setRequestHeader()
Sintaks
setRequestHeader(name, value)
Parameter name adalah nama header yang akan ditetapkan. Parameter ini tidak seharusnya termasuk spasi, tanda titik koma, atau garis baru.
Parameter value adalah nilai header. Parameter ini tidak seharusnya termasuk garis baru.
Pengertian
Metode setRequestHeader() menentukan header permintaan HTTP, yang seharusnya disertakan dalam permintaan yang dipublikasikan 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 oleh pemuatan ini.
Jika panggilan open() menentukan kelayakan pengesahan, XMLHttpRequest akan menghantar kepala permintaan pengesahan yang sesuai secara automatik. Walau bagaimanapun, anda boleh menggunakan setRequestHeader() untuk menambahkan kepala ini. Secara serupa, jika pelayar web telah menyimpan dan menghantar kuki yang berhubungan dengan URL yang disampaikan kepada open(), kepala kuki yang sesuai atau kuki2 akan disertakan secara automatik dalam permintaan. Kuki ini boleh ditambahkan ke kepala melalui panggilan setRequestHeader(). XMLHttpRequest juga boleh menyediakan nilai lalai untuk kepala User-Agent. Jika ia melakukan demikian, mana-mana nilai yang anda tentukan untuk kepala ini akan ditambahkan di belakang nilai lalai ini.
Beberapa penghantaran kepala permintaan dipersetkan secara automatik oleh XMLHttpRequest daripada melalui kaedah ini untuk memenuhi protokol HTTP. Ini termasuk kepala yang berhubungan dengan proksi seperti berikut:
- 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