国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

JavaScript結(jié)合AJAX_stream實(shí)現(xiàn)流式顯示

2019-11-20 13:28:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

當(dāng)使用AJAX進(jìn)行信息交互的時(shí)候,如果服務(wù)器返回的信息比較大,那么相對(duì)于傳送完成之后的統(tǒng)一顯示,流式顯示就比較友好了。

流式實(shí)現(xiàn)

原理就是設(shè)置定時(shí)器,定時(shí)的查看AJAX對(duì)象的狀態(tài)并更新內(nèi)容,如果傳送完成,就取消定時(shí)器。

復(fù)制代碼 代碼如下:

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ù),請(qǐng)使用 setRequestHeader() 來(lái)添加 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)換

由于標(biāo)準(zhǔn)實(shí)現(xiàn)中的send只能接受以下幾種輸入,所以需要提前對(duì)需要傳遞的數(shù)據(jù)對(duì)象轉(zhuǎn)換為字符串或者FormData格式,這一點(diǎn)就不如JQuery的方便了,但是JQuery如何在傳輸中間實(shí)現(xiàn)事件響應(yīng)還不得而知,所以不能用,再或者把所有的對(duì)象轉(zhuǎn)換中JSON。

復(fù)制代碼 代碼如下:

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)成字符串。

復(fù)制代碼 代碼如下:

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;
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿坝县| 自贡市| 商丘市| 乐都县| 平顶山市| 攀枝花市| 洞头县| 辰溪县| 大冶市| 图片| 曲麻莱县| 连云港市| 榕江县| 闻喜县| 石家庄市| 彭山县| 托里县| 陵水| 张家口市| 高平市| 宜宾市| 柘城县| 松江区| 崇左市| 元谋县| 永宁县| 民县| 永吉县| 来凤县| 霍林郭勒市| 龙南县| 鄂州市| 峨眉山市| 赤城县| 昭觉县| 平利县| 潍坊市| 抚松县| 马龙县| 政和县| 平定县|