JavaScript结合AJAX_stream实现流式显示

 更新时间:2015年01月08日 10:07:37   投稿:hebedich  
这篇文章主要介绍了JavaScript结合AJAX_stream实现流式显示,需要的朋友可以参考下

当使用AJAX进行信息交互的时候,如果服务器返回的信息比较大,那么相对于传送完成之后的统一显示,流式显示就比较友好了。

流式实现

原理就是设置定时器,定时的查看AJAX对象的状态并更新内容,如果传送完成,就取消定时器。

复制代码 代码如下:

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 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
    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数据转换

由于标准实现中的send只能接受以下几种输入,所以需要提前对需要传递的数据对象转换为字符串或者FormData格式,这一点就不如JQuery的方便了,但是JQuery如何在传输中间实现事件响应还不得而知,所以不能用,再或者把所有的对象转换中JSON。

复制代码 代码如下:

void send();
void send(ArrayBuffer data);
void send(Blob data);
void send(Document data);
void send(DOMString? data);
void send(FormData data);

下面是转换的代码,如果浏览器支持FormData就转换,否则转成字符串。

复制代码 代码如下:

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

相关文章

  • JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法

    JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法

    本文通过实例代码给大家介绍了JavaScript 上传文件(psd,压缩包等),图片,视频功能,需要的朋友可以参考下
    2017-06-06
  • JavaScript实现查找字符串中第一个不重复的字符

    JavaScript实现查找字符串中第一个不重复的字符

    这篇文章主要介绍了JavaScript实现查找字符串中第一个不重复的字符,需要的朋友可以参考下
    2014-12-12
  • 聊聊鉴权那些事(推荐)

    聊聊鉴权那些事(推荐)

    这篇文章主要介绍了聊聊鉴权那些事(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • js中关于base64编码的问题

    js中关于base64编码的问题

    这篇文章主要介绍了js中关于base64编码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • JavaScript获取css行间样式,内连样式和外链样式的简单方法

    JavaScript获取css行间样式,内连样式和外链样式的简单方法

    下面小编就为大家带来一篇JavaScript获取css行间样式,内连样式和外链样式的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数

    JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数

    这篇文章主要介绍了JavaScript -- JSON.parse 函数 和 JSON.stringify 函数,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • js轮播图无缝滚动效果

    js轮播图无缝滚动效果

    这篇文章主要为大家详细介绍了js轮播图无缝滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JS、CSS以及img对DOMContentLoaded事件的影响

    JS、CSS以及img对DOMContentLoaded事件的影响

    最近在做性能有关的数据上报,发现了两个非常有意思的东西:Chrome开发者工具的Timeline分析面板,以及DOMContentLoaded事件。一个是强大的令人发指的性能分析工具,一个是重要的性能指标,于是就用Timeline对DOMContentLoaded事件进行了一番研究
    2014-08-08
  • 详解javascript appendChild()的完整功能

    详解javascript appendChild()的完整功能

    这篇文章主要介绍了详解javascript appendChild()的完整功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 微信小程序实现简单聊天室

    微信小程序实现简单聊天室

    这篇文章主要为大家详细介绍了微信小程序实现简单聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论