JavaScript AJAX stream 流式显示
来源:互联网 发布:淘宝鞋店店铺简介 编辑:程序博客网 时间:2024/04/30 00:45
当使用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;
}
流式实现
原理就是设置定时器,定时的查看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;
}
0 0
- JavaScript AJAX stream 流式显示
- 读取 显示 jpeg stream 视频流
- JAVASCRIPT Adodb.Stream
- 16.3 Stream流式编程
- Stream流
- Ajax写的方法在javascript中找不到 显示未定义
- Web编程 - JavaScript/Ajax - uploadify不显示flash上传按钮
- ajax/php/javascript实现每页固定显示三个
- spring stream http 流式计算
- 函数式编程 流Stream的使用
- 使用stream类型的Result实现Ajax
- ajax 和 adodb.stream组件 上传本地文件
- 使用Stream类型的Result实现Ajax
- [Ajax]便于在html页面中引用javascript显示后台数据的一段ajax代码
- javascript ajax
- javascript , ajax
- javascript ajax
- Ajax(Javascript)
- 苹果的贡献
- Xilinx Zynq使用HLS实现OpenCV的开发流程
- UML——状态图
- [小技巧] 找出文件中的重复行从大到小排序
- 怎么解决python "Non-ASCII character"错误
- JavaScript AJAX stream 流式显示
- PHP代码优化
- 机会网络仿真软件ONE:配置文件settings解读
- 数据流图的画法
- 从贝叶斯方法谈到贝叶斯网络
- 2014.11.13-心情杂
- linux 的C语言 fork()函数
- wp8 怎样让listbox绑定dictionary再通过key找item
- 活动图