Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada 5 keadaan javascript ajax_Pengetahuan asas

Pengenalan kepada 5 keadaan javascript ajax_Pengetahuan asas

WBOY
WBOYasal
2016-05-16 16:39:251261semak imbas

Saya secara tidak sengaja melihat pengenalan status readyStae dalam "Pragmatic ajax (dynamic website staticization) A Web 2.0 Primer. Saya rasa pengenalan ini sangat praktikal

0: (Tidak dimulakan) kaedah hantar( ) masih belum digunakan

1: (Memuatkan) kaedah hantar( ) telah digunakan, permintaan sedang dijalankan
2: (Dimuatkan) kaedah hantar( ) telah selesai, keseluruhan respons diterima.
3: (Interaktif) respons sedang dihuraikan
4: (Selesai) respons telah dihuraikan, sedia untuk dituai.

0 - (tidak dimulakan) kaedah hantar() belum dipanggil lagi

1 - (Memuatkan) Kaedah hantar() telah dipanggil dan permintaan sedang dihantar
2 - (Pemuatan selesai) Kaedah hantar() telah dilaksanakan dan semua kandungan respons telah diterima
3 - (Interaktif) Menghuraikan kandungan respons
4 - (Lengkap) Penghuraian kandungan respons selesai dan boleh dipanggil pada klien

Kebanyakan buku lain tidak jelas tentang lima keadaan readyState ini. Sebagai contoh, dalam "Asas ajax (Tapak Web Dinamik Statik)", Jadual 2-2 dalam buku hanya menyenaraikan "nama" keadaan - Keadaan permintaan lima nilai yang mungkin adalah 0 = tidak dimulakan, 1 = memuatkan, 2 = dimuatkan, 3 = interaktif, dan 4 = lengkap. Walau bagaimanapun, "ajax (pestatikan laman web dinamik) dalam Tindakan" nampaknya tidak menyebut butiran lima keadaan ini sama sekali. Walaupun "Ajax profesional (pestatikan tapak web statik)" tidak memuaskan, ia masih mempunyai kelebihan:

Terdapat lima nilai yang mungkin ​​untuk readyState:

0 (Uninitialized): Objek telah dibuat tetapi kaedah open() belum dipanggil 1 (Memuatkan): Kaedah open() telah dipanggil tetapi permintaan belum dihantar
2 (Dimuatkan): Permintaan telah dihantar
3 (Interaktif). Sambutan separa telah diterima 4 (Lengkap): Semua data telah diterima dan sambungan telah ditutup.


readyState mempunyai lima nilai yang mungkin:

0 (tidak dimulakan): (xml(pestandardisasi semakin hampir) objek HttpRequest) telah dibuat, tetapi kaedah open() belum dipanggil. 1 (Memuatkan): Kaedah open() telah dipanggil, tetapi permintaan belum dihantar lagi.
2 (Pemuatan selesai): Permintaan telah dihantar.
3 (Interaktif): Data tindak balas separa boleh diterima.
4 (Lengkap): Semua data telah diterima dan sambungan telah ditutup.

Dalam "Memahami ajax (pestatikan tapak web statik): Menggunakan JavaScript untuk Mencipta Aplikasi Internet Kaya", jadual berikut digunakan untuk menggambarkan:

Kod Status Negeri sedia

Status xml (penyeragaman semakin hampir) Objek HttpRequest (0) TIDAK DIMINATI
Tidak dimulakan Objek telah dibuat tetapi tidak dimulakan (Kaedah terbuka belum dipanggil.)
(xml (penyeragaman semakin hampir) HttpRequest) objek telah dibuat, tetapi belum dimulakan (kaedah terbuka belum dipanggil lagi).
(1) MEMUAT
Memuatkan Objek telah dibuat, tetapi kaedah hantar belum dipanggil.
(xml (penyeragaman semakin hampir) HttpRequest) objek telah dibuat, tetapi kaedah hantar belum dipanggil lagi.
(2) DIMUAT
Pemuatan selesai Kaedah penghantaran telah dipanggil, tetapi status dan pengepala belum tersedia.
Kaedah hantar telah dipanggil, status (tindak balas HTTP) dan pengepala belum tersedia lagi.
(3) INTERAKTIF
Interaksi Sesetengah data telah diterima Memanggil responseBody dan sifat responseText pada keadaan ini untuk mendapatkan hasil separa akan mengembalikan ralat, kerana pengepala status dan respons tidak tersedia sepenuhnya.
Beberapa data telah diterima. Walau bagaimanapun, jika anda memanggil sifat responseBody dan responseText untuk mendapatkan hasil separa pada masa ini, ralat akan berlaku kerana pengepala status dan respons belum tersedia sepenuhnya.
(4) SELESAI
Lengkapkan Semua data telah diterima dan data lengkap tersedia dalam responsBody dan sifat responseText.
Semua data telah diterima dan data lengkap boleh diekstrak dalam sifat responseBody dan responseText.

Menurut pengenalan lima keadaan readyState dalam buku di atas, saya fikir "Ajax pragmatik (pestatikan laman web dinamik) Primer Web 2.0" adalah lebih tepat kerana ia menyebut analisis data yang diterima , ini tidak disebut dalam buku lain, dan inilah sebab mengapa peringkat "(3) interaksi" wujud sebagai proses penukaran yang diperlukan antara "(2) penyiapan pemuatan" dan "(4) penyiapan" , iaitu, apakah misinya. Kesimpulannya, saya fikir kaedah penjelasan yang ideal adalah untuk mentakrifkan keadaan ini dalam mod ungkapan "keadaan: prestasi (atau ciri) proses tugas (matlamat)" yang lebih tepat dan mudah difahami. Ringkasan ujian semasa adalah seperti berikut:

status sediaNegeri

Penerangan


(0) tidak dimulakan

Peringkat ini mengesahkan sama ada xml (penyeragaman semakin hampir) objek HttpRequest dicipta dan bersedia untuk nyahinisialisasi dengan memanggil kaedah open(). Nilai 0 menunjukkan bahawa objek sudah wujud, jika tidak pelayar akan melaporkan ralat - objek tidak wujud.

(1)Muatkan
Pada peringkat ini, objek xml (penyeragaman semakin hampir) HttpRequest dimulakan, iaitu kaedah open() dipanggil dan status objek ditetapkan mengikut parameter (kaedah, url, benar). Dan panggil kaedah send() untuk mula menghantar permintaan ke pelayan. Nilai 1 menunjukkan bahawa permintaan sedang dihantar ke pelayan.

(2) Pemuatan selesai
Peringkat ini menerima data tindak balas daripada pelayan. Tetapi yang diperoleh hanyalah data asal respon pelayan dan tidak boleh digunakan terus pada klien. Nilai 2 menunjukkan bahawa semua data respons telah diterima. Dan bersedia untuk peringkat seterusnya analisis data.

(3)Interaksi
Peringkat ini menghuraikan data tindak balas sebelah pelayan yang diterima. Iaitu, mengikut jenis MIME yang dikembalikan oleh pengepala respons sebelah pelayan, data ditukarkan kepada format yang boleh diakses melalui atribut responseBody, responseText atau responsexml (pestandardisasi semakin hampir) dan bersedia untuk seruan pada pelanggan. Status 3 menunjukkan bahawa data sedang dihuraikan.

(4) Selesai
Pada peringkat ini, ia disahkan bahawa semua data telah dihuraikan ke dalam format yang boleh digunakan oleh pelanggan, dan penghuraian telah selesai. Nilai 4 menunjukkan bahawa penghuraian data telah selesai dan data boleh diperolehi melalui atribut xml yang sepadan (penyeragaman semakin hampir) objek HttpRequest.

Ringkasnya, kitaran hayat keseluruhan xml (penyeragaman semakin hampir) objek HttpRequest harus merangkumi peringkat berikut:
Cipta - mulakan permintaan - hantar permintaan - terima data - huraikan data - lengkapkan

Dalam aplikasi tertentu, dengan menjelaskan maksud lima keadaan readyState (pelbagai peringkat kitaran hayat xml (penyeragaman semakin hampir) objek HttpRequest), anda boleh menghapuskan misteri teras ajax (pestatikan laman web dinamik ) (Sebab di sebalik kata-kata yang tidak jelas adalah sama ada untuk membuat sesuatu menjadi misteri dan mewujudkan rasa misteri; atau untuk "membuat orang pengsan dan menyedarkan orang" Dengan cepat memahami intipati adalah sangat bermanfaat untuk mengurangkan kekecewaan dalam pembelajaran dan meningkatkan diri. keyakinan diri.

Sebagai contoh, melalui contoh berikut:

Salin kod Kod adalah seperti berikut:

//Isytihar tatasusunan
var states = ["Memulakan...",
"Memulakan permintaan...berjaya!
Menghantar permintaan...",
"Berjaya!
Menerima data...",
"Selesai!
Menghuraikan data...",
"Selesai!
”];

//Coretan kod dalam fungsi panggil balik
if (xml(penyeragaman semakin hampir)Http.readyState==4)
{
var span = document.createElement("span");
span.innerHTML = menyatakan[xml(penyeragaman semakin hampir)Http.readyState];
document.body.appendChild(span);

jika (xml(penyeragaman semakin hampir)Http.status == 200)
{
var xml (Penstandardisasi semakin hampir) doc = xml (Penstandardan semakin hampir) Http.responsexml (Penstandardan semakin hampir); //Kod lain
}

//Jangan lupa musnahkan untuk mengelakkan kebocoran memori

xml (penyeragaman semakin hampir)Http = null;
}lain{
var span = document.createElement("span");
span.innerHTML = menyatakan[xml(penyeragaman semakin hampir)Http.readyState];
document.body.appendChild(span);
}Hasilnya adalah seperti berikut:

Memulakan permintaan...berjaya!

Menghantar permintaan...berjaya!
Menerima data... Selesai!
Menghuraikan data... Selesai!

Adalah mudah untuk kita memahami apa yang dilakukan oleh objek xml (penyeragaman semakin hampir) HttpRequest pada setiap peringkat. Oleh itu, adalah mudah untuk mempunyai pemahaman yang sangat mudah dan jelas tentang bahagian teras ajax (pestatikan laman web dinamik).

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn