Ajax telah sangat populer dalam beberapa tahun terakhir, dan inti dari Ajax adalah XMLHttpRequest, yang merupakan penggunaan objek XMLHttpRequest sisi klien. Dibandingkan dengan Ajax, XMLHTTP sisi server menggunakan objek XMLHttpRequest di sisi server. Meskipun lebih merepotkan menggunakan permintaan asynchronous di sisi server, namun sebagai komponen yang dapat mengirimkan permintaan HTTP di sisi server, tidak ada salahnya mempelajarinya.
Di sini, saya berbicara tentang penggunaan XMLHttpRequest sisi server dalam lingkungan ASP, dan menggunakan JScript sebagai bahasa untuk kode demonstrasi.
XMLHTTP sisi server biasanya digunakan untuk mendapatkan halaman web atau konten lain dari host jarak jauh. Sistem agregasi berita umumnya menggunakan objek XMLHTTP sisi server untuk mendapatkan konten feed yang akan dikumpulkan, dan kemudian menggunakan objek XMLDOM untuk menganalisis konten dari feed. memberi makan dan mengambil judul berita, penulis, konten dan informasi lainnya kemudian disimpan dalam database, dan kemudian berita dari beberapa sumber data ditampilkan bersama-sama. Tangkap udang adalah agregator berita, tetapi tidak ditulis dalam ASP :)
Di ASP, kita dapat menggunakan kode berikut untuk membuat objek ServerXMLHTTP, dan objek ini adalah dasar untuk semua operasi yang kita lakukan di sisi server.
Copy kode kodenya sebagai berikut:
var xmlhttp = ActiveXObject baru(MSXML2.ServerXMLHTTP.5.0);
Pertama, mari kita lihat metode yang lebih berguna dari objek ServerXMLHTTP:
1. batalkan Metode ini digunakan untuk membatalkan permintaan XMLHTTP. Jika objek XMLHTTP mengirimkan permintaan secara asinkron, jika permintaan masih tidak kembali setelah waktu tertentu, Anda dapat menggunakan metode ini untuk membatalkan permintaan.
2. getAllResponseHeaders Nilai kembalian metode ini adalah string, yang setara dengan header permintaan HTTP tanpa metode permintaan, URI, dan informasi versi protokol.
3. getResponseHeader Metode ini digunakan untuk mendapatkan informasi header yang ditentukan. Yang lebih berguna adalah untuk mendapatkan Content-Type, Referer, dll dari data yang dikembalikan.
4. buka menginisialisasi permintaan menggunakan metode permintaan yang ditentukan, URI, metode sinkronisasi, informasi otentikasi, dll.
5. send mengirimkan permintaan HTTP dan menunggu data respons diterima. Perhatikan bahwa jika permintaan dikirim secara sinkron, metode kirim tidak akan segera kembali setelah dipanggil, tetapi akan menunggu hingga permintaan selesai meminta dalam metode asinkron, itu akan segera Kembali. Selain itu, metode kirim memiliki isi parameter opsional, yang mewakili data yang akan dikirim, yang lebih berguna saat menggunakan metode POST.
6. setTimeout menyetel empat batas waktu objek ServerXMLHTTP, yaitu: resolusi nama domain, koneksi ke server, pengiriman data, dan penerimaan respons. Anda dapat mengontrol objek ServerXMLHTTP dengan mengatur periode batas waktu yang sesuai untuk mencegah ServerXMLHTTP gagal kembali tepat waktu dan menyebabkan program berhenti merespons.
7. setRequestHeader menyetel header permintaan. Di klien XMLHttpRequest, biasanya digunakan untuk menyetel tipe data permintaan, atau mengidentifikasi metode permintaan, dll. Misalnya, jquery akan menambahkan pengidentifikasi header X-Request-With untuk menunjukkan bahwa permintaan berasal dari objek XMLHttpRequest. Dikeluarkan untuk memfasilitasi server mengambil tindakan terkait.
8. waitForResponse Saat mengirim permintaan secara asinkron, Anda dapat menggunakan metode ini untuk mengontrol proses permintaan. Dalam skrip sisi server, Anda tidak dapat secara langsung menggunakan fungsi panggilan balik untuk mengontrol permintaan asinkron seperti yang dilakukan klien, dan tidak ada fungsi yang sesuai untuk menggunakan program untuk tidur selama jangka waktu tertentu, untuk menunggu permintaan tersebut kembali, kita bisa menggunakan cara ini untuk menunggu dalam jangka waktu tertentu.
Selain itu masih ada metode lain seperti getOption, setOption, setProxy, dll. Metode-metode ini jarang digunakan, sehingga tidak akan diperkenalkan di sini. Teman-teman yang ingin tahu lebih banyak bisa merujuk ke MSDN.
Selanjutnya, mari kita lihat properti objek ServerXMLHTTP:
1. onreadystatechange Fungsi panggilan balik ketika status objek XMLHTTP berubah. Atribut ini meletakkan dasar untuk operasi asinkron, memungkinkan program mengetahui apakah operasi XMLHTTP telah selesai tanpa menanyakan status objek XMLHTTP.
2. status objek XMLHTTP readyState memiliki 5 nilai, dari 0 hingga 4, yang masing-masing mewakili:
0 - Tidak diinisialisasi, keadaan objek saat baru dibuat menggunakan ActiveXObject baru (MSXML.ServerXMLHTTP.5.0)
1 - Memuat. Saat ini, metode terbuka telah dipanggil, tetapi metode kirim belum digunakan untuk mengirim data.
2 - Sudah dimuat, metode kirim telah dipanggil untuk mengirim data, namun belum ada aliran respons yang tersedia.
3 - Berinteraksi dan menerima data. Saat ini, Anda dapat menggunakan atribut responBody dan responText untuk mendapatkan sebagian data yang telah diperoleh.
4 - Selesaikan permintaan, semua data telah diterima
Biasanya, kita hanya perlu menentukan status 4. Saat ini, semua data telah dimuat, dan data yang diperlukan dapat diperoleh dengan menggunakan atribut responBody atau responText.
3. status Kode status respon HTTP, yang seharusnya 200 dalam keadaan normal. Jika sumber daya yang diminta tidak ada, 404 akan dikembalikan. Ada kode status lain seperti kesalahan server 500, dll.
4. statusText Teks status respons HTTP, digunakan untuk menjelaskan arti kode status respons, seperti OK di 200 OK, Tidak Ditemukan di 404 Tidak Ditemukan
5. responBody adalah array byte data respon. Ini dapat digunakan langsung di VBScript, tetapi perlu dikonversi dalam JScript.
6. responText memperoleh data respon dalam bentuk teks
7. responXML mengembalikan data respons sebagai objek XMLDOM, yang sangat berguna bila data yang diminta adalah dokumen XML.
8. objek aliran respons responStream, atribut ini tidak umum digunakan