JavaScript结合AJAX_stream实现流式显示


Posted in Javascript onJanuary 08, 2015

当使用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 相关文章推荐
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
jquery中live()方法和bind()方法区别分析
Jun 23 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
AngularJS实用开发技巧(推荐)
Jul 13 Javascript
前端自动化开发之Node.js的环境搭建教程
Apr 01 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
微信小程序实现炫酷的弹出式菜单特效
Jan 28 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 Javascript
vue实现div单选多选功能
Jul 16 Javascript
jQuery中siblings()方法用法实例
Jan 08 #Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 #Javascript
jQuery中prevUntil()方法用法实例
Jan 08 #Javascript
jQuery中prevAll()方法用法实例
Jan 08 #Javascript
jQuery中prev()方法用法实例
Jan 08 #Javascript
深入探密Javascript数组方法
Jan 08 #Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 #Javascript
You might like
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
jquery 按键盘上的enter事件
2014/05/11 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python守护进程用法实例分析
2015/06/04 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Python当中的array数组对象实例详解
2019/06/12 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
对于Python深浅拷贝的理解
2019/07/29 Python
django创建超级用户过程解析
2019/09/18 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
资深生产主管自我评价
2013/09/22 职场文书
怎样写留学自荐信
2013/11/11 职场文书
校园标语大全
2014/06/19 职场文书
行政二审代理词
2015/05/25 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
党员身份证明材料
2015/06/19 职场文书
毕业生入职感言
2015/07/31 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书