汇盛国际:JavaScript结合AJAX_stream实现流式显示

时间: 作者:县马

  

[JavaScript,AJAX_stream,流式显示]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;  
  }  
  
  

(责任编辑:admin)

推荐图片Related

相关文章Related

查看更多热门新闻


首页 | 特效插件 | 常用代码 | 样式素材 | 脚本代码 | css特效

Copyright © 2017-2018 汇盛国际 版权所有

系统要求:本站自适应各终端浏览器分辨率

请使用Google、Firefox、IE9、百度浏览器登录网站

网站地图 | RSS订阅 | 汇盛国际平台