源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript结合AJAX_stream实现流式显示

  • 时间:2020-10-10 12:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript结合AJAX_stream实现流式显示
当使用AJAX进行信息交互的时候,如果服务器返回的信息比较大,那么相对于传送完成之后的统一显示,流式显示就比较友好了。 流式实现 原理就是设置定时器,定时的查看AJAX对象的状态并更新内容,如果传送完成,就取消定时器。
[u]复制代码[/u] 代码如下:
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。
[u]复制代码[/u] 代码如下:
void send(); void send(ArrayBuffer data); void send(Blob data); void send(Document data); void send(DOMString? data); void send(FormData data);
下面是转换的代码,如果浏览器支持FormData就转换,否则转成字符串。
[u]复制代码[/u] 代码如下:
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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部