当使用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; }
本文向大家介绍SSh结合Easyui实现Datagrid的分页显示,包括了SSh结合Easyui实现Datagrid的分页显示的使用技巧和注意事项,需要的朋友参考一下 近日学习Easyui,发现非常好用,界面很美观。将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加、修改、删除、批量删除等功能将在后面一一写来。 首先看一下要实
本文向大家介绍javascript结合fileReader 实现上传图片,包括了javascript结合fileReader 实现上传图片的使用技巧和注意事项,需要的朋友参考一下 关于File API这里就不详细解释了,小伙伴们自行度娘吧,来我们就要利用文件句柄来读取文件内容,这是通过FileReader来实现的,通过FileReader接口,我们可以异步地将文件内容加载到内存中,赋予某个js变量
本文向大家介绍javascript 实现map集合,包括了javascript 实现map集合的使用技巧和注意事项,需要的朋友参考一下 前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下 大家不要见笑 代码 以上所述就是本文的全部内容了,希望大家能够喜欢。
本文向大家介绍JavaScript实现Ajax总结,包括了JavaScript实现Ajax总结的使用技巧和注意事项,需要的朋友参考一下 ajax应用非常普及,ajax的优点大家都知道,具体就不多说了,其缺点还真不少,比如破坏浏览器的back功能,同一个url打开的界面并不是完全相同,还有安全性能等方面,至于有这么多的缺点,也阻止不了大家使用ajax的步伐~~~ 这里以表单为例说一下实现Ajax的步
我是使用EventSource去实现的,可显示的话和访问普通接口一样是全部一次性显示出来,以下是我的代码 请问要如何才可以实现和chatGPT一样效果的流式输出 tips:我自己用网页访问接口数据是一条一条输出的,可是在控制台看的话也是一瞬全部出来,虽然是分很多条
本文向大家介绍JavaScript实现瀑布流布局的3种方式,包括了JavaScript实现瀑布流布局的3种方式的使用技巧和注意事项,需要的朋友参考一下 前言 今天逛闲鱼的时候观察到每一行的高度不是相同的,经了解才知道原来这是一种瀑布流布局,感觉挺有意思,于是决定研究一下,在网上也找了一些方案,实现瀑布流大概有3种方式。 一、JS 实现瀑布流 思路分析 1、瀑布流布局的特点是等宽不等高。 2、为了让