Saat menggunakan AJAX untuk interaksi informasi, jika informasi yang dikembalikan oleh server relatif besar, tampilan streaming akan lebih ramah dibandingkan dengan tampilan terpadu setelah transmisi selesai.
Implementasi Streaming
Prinsipnya adalah mengatur timer, secara teratur melihat status objek AJAX dan memperbarui konten. Jika transmisi selesai, timer akan dibatalkan.
Salinan kode adalah sebagai berikut:
Fungsi ajax_stream (url, data, elemen) {
var xmlhttp = null;
if (window.xmlHttpRequest)
{// Kode untuk IE7, Firefox, Opera, dll.
xmlhttp = new xmlHttpRequest ();
}
lain jika (window.activexObject)
{// kode untuk IE6, IE5
xmlhttp = ActivexObject baru ("microsoft.xmlhttp");
}
if (xmlhttp == null)
{
peringatan ("Browser Anda tidak mendukung xmlhttp.");
element.val ('Browser Anda tidak mendukung xmlhttp. Klik tautan log untuk memantau prosedur.');
kembali 0;
}
var xhr = xmlhttp;
xhr.open ('pos', url, true);
// Jika Anda memerlukan data posting seperti formulir HTML, gunakan setRequestheader () untuk menambahkan header HTTP. Kemudian tentukan data yang ingin Anda kirim dalam metode kirim ():
xhr.setRequestheader ("tipe konten", "Aplikasi/X-WWW-Form-Urlencoded");
xhr.send (data);
var timer;
timer = window.setInterval (function () {
if (xhr.readystate == xmlHttpRequest.done) {
window.cleartimeout (timer);
}
element.val (xhr.Responsetext);
}, 1000);
}
Posting Konversi Data
Karena mengirimkan implementasi standar hanya dapat menerima jenis input berikut, perlu untuk mengonversi objek data yang akan diteruskan ke format string atau formdata di muka, yang tidak senyaman jQuery. Namun, tidak diketahui bagaimana jQuery dapat menerapkan respons acara di tengah transmisi, sehingga tidak dapat digunakan, dan Anda dapat mengubah semua objek menjadi JSON.
Salinan kode adalah sebagai berikut:
void send ();
batal kirim (data arraybuffer);
batal kirim (data gumpalan);
batal kirim (data dokumen);
batal kirim (domString? data);
batal kirim (data formdata);
Berikut ini adalah kode konversi. Jika browser mendukung FormData, itu akan dikonversi, jika tidak itu akan dikonversi menjadi string.
Salinan kode adalah sebagai berikut:
Fungsi ajax_generate_data (jsobj) {
var i;
if (window.formdata) {
var data = formData baru ();
untuk saya di jsobj {
Data.Append (i, jsobj [i]);
}
} kalau tidak {
var data = '';
var datas = [];
untuk saya di jsobj {
// Untuk nilai sehingga mungkin & terkandung dalam string tidak merusak format
var value = encodeuricomponent (jsobj [i]);
DATAS.Append (i + '=' + value);
}
data = datas.join ('&')
}
console.log (data);
pengembalian data;
}