JavaScript结合AJAX_stream实现流式显示
2015-01-08 00:00
429 查看
当使用AJAX进行信息交互的时候,如果服务器返回的信息比较大,那么相对于传送完成之后的统一显示,流式显示就比较友好了。
流式实现
原理就是设置定时器,定时的查看AJAX对象的状态并更新内容,如果传送完成,就取消定时器。
post数据转换
由于标准实现中的send只能接受以下几种输入,所以需要提前对需要传递的数据对象转换为字符串或者FormData格式,这一点就不如JQuery的方便了,但是JQuery如何在传输中间实现事件响应还不得而知,所以不能用,再或者把所有的对象转换中JSON。
下面是转换的代码,如果浏览器支持FormData就转换,否则转成字符串。
流式实现
原理就是设置定时器,定时的查看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结合AJAX_stream实现流式显示
- JavaScript AJAX stream 流式显示
- ajax/php/javascript实现每页固定显示三个
- JavaScript基于Ajax实现不刷新在网页上动态显示文件内容
- java和python结合项目,实现ajax+echarts显示端口占用数监控
- HTML5结合ajax实现文件上传以及进度显示
- Servlet:htm+javascript+css+servlet (ajax)实现上传(能显示进度条)
- 有了html页面,进行二次显示,通过html、JavaScript、jQuery的ajax三种技术,我可以实现任何界面效果
- Servlet:htm+javascript+css+servlet (ajax)实现上传(能显示进度条)
- 原生js如何实现柱状图以及原生js柱状图结合ajax循环动态数据_JavaScript_柱状图(原生JavaScript做的柱状图)(03)_ajax获取数据
- springMVC结合ajaxfileupload.js实现图片的上传及时显示
- 用AJAX实现无刷新数据读取与显示
- xmlHTTP xmlDOC 与 C#中DataSet的结合 实现AJAX简单示例
- ajax 笔记--不用刷新实现数据的分页显示 2 (下)
- ajax 笔记--不用刷新实现数据的分页显示 2 (上)
- ajax 笔记--不用刷新实现数据的分页显示 2 (上)
- 一个简单的用javascript实现的页面内容过滤显示小程序源码
- javascript实现日期星期的显示
- ajax 笔记--不用刷新实现数据的分页显示
- Smarty结合Ajax实现无刷新留言本实例