Rumah  >  Artikel  >  hujung hadapan web  >  JavaScript menggabungkan AJAX_stream untuk melaksanakan kemahiran display_javascript penstriman

JavaScript menggabungkan AJAX_stream untuk melaksanakan kemahiran display_javascript penstriman

WBOY
WBOYasal
2016-05-16 16:21:391319semak imbas

Apabila menggunakan AJAX untuk interaksi maklumat, jika maklumat yang dikembalikan oleh pelayan agak besar, maka paparan penstriman lebih mesra daripada paparan bersatu selepas penghantaran selesai.

Pelaksanaan penstriman

Prinsipnya adalah untuk menetapkan pemasa, semak status objek AJAX dengan kerap dan kemas kini kandungan Jika penghantaran selesai, batalkan pemasa.

Salin kod Kod adalah seperti berikut:

fungsi ajax_stream(url,data,elemen) {
var xmlHttp=null;
Jika (tetingkap.XMLHttpRequest)
{// kod untuk IE7, Firefox, Opera, dsb.
xmlHttp= XMLHttpRequest baharu();
}
​ else if (window.ActiveXObject)
{// kod untuk IE6, IE5
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
Jika (xmlHttp==null)
          {
alert("Pelayar anda tidak menyokong XMLHTTP.");
         element.val('Pelayar anda tidak menyokong XMLHTTP. Klik pautan LOG untuk memantau prosedur.');
Pulangan 0;
}
var xhr = xmlHttp;
xhr.open('POST', url, true);
// Jika anda perlu MENYATAKAN data seperti borang HTML, sila gunakan setRequestHeader() untuk menambah pengepala HTTP. Kemudian nyatakan data yang ingin anda hantar dalam kaedah send():
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(data);
pemasa var;
Pemasa = window.setInterval(function() {
Jika (xhr.readyState == XMLHttpRequest.DONE) {
               tetingkap.clearTimeout(pemasa);
}
          element.val(xhr.responseText);
}, 1000);
}

penukaran data siaran

Memandangkan penghantaran dalam pelaksanaan standard hanya boleh menerima jenis input berikut, objek data yang perlu dipindahkan perlu ditukar kepada rentetan atau format FormData terlebih dahulu Ini tidak semudah JQuery, tetapi bagaimana JQuery melaksanakannya di tengah-tengah penghantaran? Sambutan acara belum diketahui, jadi anda tidak boleh menggunakannya atau menukar semua objek kepada JSON.

Salin kod Kod adalah seperti berikut:

batal hantar();
void hantar(data ArrayBuffer);
batal hantar(Data gumpalan);
batal hantar(Data dokumen);
void send(DOMString? data);
void hantar(data FormData);

Berikut ialah kod penukaran Jika penyemak imbas menyokong FormData, ia akan ditukar, jika tidak ia akan ditukar menjadi rentetan.

Salin kod Kod adalah seperti berikut:

fungsi ajax_generate_data(jsobj) {
var i;
Jika (tetingkap.FormData) {
      var data = new FormData();
           untuk i dalam jsobj {
              data.append(i,jsobj[i]);
}
} lain {
      var data = '';
        var datas = [];
           untuk i dalam jsobj {
// untuk nilai supaya mungkin & terkandung dalam rentetan tidak memecahkan format
              nilai var = encodeURIComponent(jsobj[i]);
               datas.append(i '=' value);
}
          data = datas.join('&')
}
console.log(data);
Kembalikan data;
}
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