JavaScript結(jié)合AJAX_stream實現(xiàn)流式顯示
當使用AJAX進行信息交互的時候,如果服務(wù)器返回的信息比較大,那么相對于傳送完成之后的統(tǒng)一顯示,流式顯示就比較友好了。
流式實現(xiàn)
原理就是設(shè)置定時器,定時的查看AJAX對象的狀態(tài)并更新內(nèi)容,如果傳送完成,就取消定時器。
function ajax_stream(url,data,element) {
var xmlHttp=null;
if (window.XMLHttpRequest)
{// code for IE7, Firefox, Opera, etc.
xmlHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{// code for IE6, IE5
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null)
{
alert("Your browser does not support XMLHTTP.");
element.val('Your browser does not support XMLHTTP. Click the LOG link to monitor the procedure.');
return 0;
}
var xhr = xmlHttp;
xhr.open('POST', url, true);
// 如果需要像 HTML 表單那樣 POST 數(shù)據(jù),請使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規(guī)定您希望發(fā)送的數(shù)據(jù):
xhr.setRequestHeader("Content-type","application/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);
}
post數(shù)據(jù)轉(zhuǎn)換
由于標準實現(xiàn)中的send只能接受以下幾種輸入,所以需要提前對需要傳遞的數(shù)據(jù)對象轉(zhuǎn)換為字符串或者FormData格式,這一點就不如JQuery的方便了,但是JQuery如何在傳輸中間實現(xiàn)事件響應(yīng)還不得而知,所以不能用,再或者把所有的對象轉(zhuǎn)換中JSON。
void send();
void send(ArrayBuffer data);
void send(Blob data);
void send(Document data);
void send(DOMString? data);
void send(FormData data);
下面是轉(zhuǎn)換的代碼,如果瀏覽器支持FormData就轉(zhuǎn)換,否則轉(zhuǎn)成字符串。
function ajax_generate_data(jsobj) {
var i;
if (window.FormData) {
var data = new FormData();
for i in jsobj {
data.append(i,jsobj[i]);
}
} else {
var data = '';
var datas = [];
for i in jsobj {
// for the values so that possible & contained in the strings do not break the format
var value = encodeURIComponent(jsobj[i]);
datas.append(i + '=' + value);
}
data = datas.join('&')
}
console.log(data);
return data;
}
相關(guān)文章
詳細談?wù)凟S6中的symbol數(shù)據(jù)類型
這篇文章主要給大家介紹了關(guān)于ES6中symbol數(shù)據(jù)類型的相關(guān)資料,Symbol函數(shù)的特性是每一個Symbol函數(shù)的返回值都是唯一的,可以通過給symbol函數(shù)傳遞不同的參數(shù)產(chǎn)生具有不同標記的值,需要的朋友可以參考下2021-08-08
詳解JavaScript實現(xiàn)繼承的五種經(jīng)典方式(附圖解)
JavaScript中的繼承是一種機制,通過它可以創(chuàng)建一個對象,該對象可以享有另一個對象的屬性和方法,本文將詳細的為大家介紹實現(xiàn)繼承的五種經(jīng)典方式,感興趣的小伙伴跟著小編一起來看看吧2023-08-08
.net JS模擬Repeater控件的實現(xiàn)代碼
一個模板控件規(guī)定了它的模板語法和js api,這是一個repeater控件的JS實現(xiàn):2013-06-06
手機端點擊圖片放大特效PhotoSwipe.js插件實現(xiàn)
這篇文章主要為大家詳細介紹了手機端點擊圖片放大特效PhotoSwipe.js插件實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08

