- 浏览: 420753 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
pmh905001:
写的很详尽,感谢!
解析jvm.dll和java.exe -
Bll:
插得真深啊,我的是(eclipse_j2ee_juno):F: ...
在eclipse里jsp编译后的java和class文件的位置 -
heming_way:
谢谢,对我很有用,解答了我对多值依赖的疑问
关于多值依赖--范式! -
JavaStudy2011:
java语言解析xml文件 -
vrussell:
Thanks man, it helps me a lot!
获得IEditorPart和IDocument
摘自http://www.ilovejs.net/archives/163
之前想做一个Web桌面的项目,考虑的必须得使用Ajax请求队列,使得Ajax的请求能按照队列按顺序执行,解决了Ajax异步传输覆盖的问题,也看了几个别人的代码,都整不太明白,所以自己干脆自己搞搞阵,自己实现,也得个安慰奖。我的实现方法很简单,通过递归调用函数,而无需使用定时器去检查Ajax请求是否已经执行完毕,具体的例子请看下面的代码:
Javascript:
HTML:
这三个请求会按顺序执行下来,请点击查看具体效果
下面展示我所实现这个请求队列的Javascript源码:
上面写的或许有些人会认为封装性不好,污染全局变量,如果封装起来也是非常简单的,这只是本人实现了这个效果时候的草稿,放到具体的项目中当然会封装为类或者对象,方便调用,具体的封装后的代码就不提供了。
另外看上面大虾写的代码时也学习了另外一点
使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null。
例如 :
此外,也可以使用send方法传递参数。使用send方法传递参数使用的是POST方法,需要设定Content-Type头信息,模拟HTTP POST方法发送一个表单,这样服务器才会知道如何处理上传的内容。参数的提交格式和GET方法中url的写法一样。设置头信息前必须先调用open方法。
例如:
xmlHttpRequest.open("POST","login.jsp",true);
xmlHttpRequest.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xmlHttpRequest.send("user="+username+"&pwd="+password);
需要注意的是根据提交方式的不同,两种提交方式分别调用后台的doGet方法和doPost方法。
下面有人的总结摘录下
学习的过程中发现几点:
1 Url不能使用其它domain, 比如用了http://www.google.cn/xxx.html, 结果提示没有权限使用 XMLHttpRequest.open();
2 XMLHttpRequest.send() 必须带参, 如果没有可以使用 XMLHttpRequest.send(null);
3 XMLHttpRequest.open(method, url, flag) 如果flag==false, 则不回调 XMLHttpRequest.onreadystatechange;
之前想做一个Web桌面的项目,考虑的必须得使用Ajax请求队列,使得Ajax的请求能按照队列按顺序执行,解决了Ajax异步传输覆盖的问题,也看了几个别人的代码,都整不太明白,所以自己干脆自己搞搞阵,自己实现,也得个安慰奖。我的实现方法很简单,通过递归调用函数,而无需使用定时器去检查Ajax请求是否已经执行完毕,具体的例子请看下面的代码:
Javascript:
onload = function(){ document.getElementById("btn").onclick = function(){ //添加请求队列 addAjax({method: "GET",url: "test2.txt",callback: callback1}); addAjax({method: "GET",url: "test.txt",callback: callback2}); addAjax({method: "GET",url: "test2.txt",callback: callback3}); //开始执行队列 executeAjax(); } } var callback1 = function(data, xhr){ document.getElementById("div1").innerHTML = data; } var callback2 = function(data, xhr){ document.getElementById("div2").innerHTML = data; } var callback3 = function(data, xhr){ document.getElementById("div3").innerHTML = data; }
HTML:
<div id="div1">getStyle test.</div> <div id="div2">getStyle test.</div> <div id="div3">getStyle test.</div> <input type="button" value="Get data" id="btn" />
这三个请求会按顺序执行下来,请点击查看具体效果
下面展示我所实现这个请求队列的Javascript源码:
var ajaxes = []; //用于存储参数对象的队列 //用于声明XMLHttpRequest实例对象 var Xhr = function(){ var xhr = false; try { xhr = new XMLHttpRequest(); } catch (e) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } return xhr; } var xhr = new Xhr(); //获得XMLHttpRequest实例对象xhr //executeAjax是主要的执行Ajax的函数 var executeAjax = function(){ //如果队列为空,则退出执行 if (!ajaxes.length) return; var options = ajaxes[0]; if (xhr) { xhr.open(options.method, options.url, true); xhr.onreadystatechange = function(){ if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) { options.callback(xhr.responseText, xhr); //删除队列中的第一个请求 ajaxes.shift(); //如果队列中还有请求,就接着递归执行executeAjax函数,直到队列为空 if (ajaxes.length > 0) { executeAjax(); } } } if (xhr.method === "post") { xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } xhr.send(options.data || null); } } //用于添加队列的函数 var addAjax = function(options){ ajaxes.push(options); }
上面写的或许有些人会认为封装性不好,污染全局变量,如果封装起来也是非常简单的,这只是本人实现了这个效果时候的草稿,放到具体的项目中当然会封装为类或者对象,方便调用,具体的封装后的代码就不提供了。
另外看上面大虾写的代码时也学习了另外一点
使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null。
例如 :
var url = "login.jsp?user=XXX&pwd=XXX"; xmlHttpRequest.open("GET",url,true); xmlHttpRequset.send(null);
此外,也可以使用send方法传递参数。使用send方法传递参数使用的是POST方法,需要设定Content-Type头信息,模拟HTTP POST方法发送一个表单,这样服务器才会知道如何处理上传的内容。参数的提交格式和GET方法中url的写法一样。设置头信息前必须先调用open方法。
例如:
xmlHttpRequest.open("POST","login.jsp",true);
xmlHttpRequest.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xmlHttpRequest.send("user="+username+"&pwd="+password);
需要注意的是根据提交方式的不同,两种提交方式分别调用后台的doGet方法和doPost方法。
下面有人的总结摘录下
引用
学习的过程中发现几点:
1 Url不能使用其它domain, 比如用了http://www.google.cn/xxx.html, 结果提示没有权限使用 XMLHttpRequest.open();
2 XMLHttpRequest.send() 必须带参, 如果没有可以使用 XMLHttpRequest.send(null);
3 XMLHttpRequest.open(method, url, flag) 如果flag==false, 则不回调 XMLHttpRequest.onreadystatechange;
发表评论
-
IE中的条件编译
2011-10-30 18:53 2083引用条件编译介绍 在IE有一个几乎没人知道的特性--“条件编 ... -
兼容IE和firefox,获得上传文件绝对路径
2011-10-17 09:59 6340firefox为了浏览器安全性,不能获得上传文件绝对路径。。d ... -
ClientAbortException: java.net.SocketException: Connection reset by peer: socke
2011-10-13 14:25 1描述下问题 tomcat报错 ClientAbortExc ... -
网络爬虫
2011-10-13 11:37 11import java.io.BufferedReader; ... -
关于JavaScript中打印jsp对象的问题
2011-10-07 15:27 1358假如jsp页面里一个strTest的String对象,值为“m ... -
另类的实现逻辑问题
2011-10-07 11:23 1253转自http://www.ilovejs.net/archiv ... -
摘抄--从function的定义看JavaScript的预加载
2011-09-28 10:59 1036http://www.nowamagic.net/librar ... -
关于无法delete文件
2011-09-26 17:12 1428File f=new File(targetDir+&qu ... -
firefox上传文件
2011-09-23 15:19 2193先看一个实例: jsp <tr class=" ... -
js 自行函数
2011-09-19 16:46 1043有很多方法立即执行匿名函数,简单的整理就有下面三种的典型方式( ... -
IE和FF中获取兄弟节点
2011-09-16 14:26 1517function getNextNode(target){ ... -
设置有iframe的页面根据窗口大小自动调整大小
2011-09-16 14:24 3085有时页面会出现莫名的不能占满页面的情况 window.on ... -
js中style属性以及仿制window.alert()功能和自定义
2011-09-14 17:32 3649JS操作css 下面是引用的。。很不错的总结、、 引用 使用j ... -
css区分各个浏览器和css Hack
2011-09-07 16:29 1321<SCRIPT LANGUAGE="Jav ... -
HTML标签的<button>导致数据在firefox自动提交和在firefox里面弹出div窗口失败
2011-09-07 15:22 1798项目中遇到这么个问题 项目中想利用div制造弹出窗口的操作 c ... -
转:Div自适应高度
2011-08-04 14:49 1522由于设计页面需要,要把两个并排显示的div实现一样高的效果,n ... -
在eclipse里jsp编译后的java和class文件的位置
2011-08-03 14:08 10276eclipse版本不一样,位置也不一样 第一种:(网上搜到的) ... -
iframe的属性:document和Document以及Document的属性和iframe在各个浏览器获得内部文档的写法
2011-08-03 11:37 2139.document引用到是的 iframe所在页面对象, .D ... -
浏览器加载显示html的顺序
2011-08-02 15:36 2322其实浏览器加载显示html的顺序是按下面的顺序进行的: 1、I ... -
div+ajax实现类似iframe功能
2011-08-01 17:03 7858function showAtRight(url) { ...
相关推荐
AJAX请求队列实现主要讲解了如何管理多个异步AJAX请求,确保它们能够按照一定的顺序执行,以防止请求因执行时机冲突而被取消或丢失。在Web应用中,用户可能会在短时间内发起多个请求,这些请求可能是异步的。如果不...
这里提供一个使用jQuery的Ajax请求队列示例: ```javascript var requestQueue = []; function sendAjaxRequest(url, callback) { if (requestQueue.length === 0) { $.ajax({ url: url, success: function...
多个ajax请求相互依赖,必须有先后顺序。 多个请求被同时发送,只需要最后一个请求。 1.情况1-多个ajax请求同时发送,相互无依赖 ajaxQueue1文件夹 ajaxQueue-requireJS //为符合AMD规范的文件,可以直接作为...
此外,`$.queue()`方法允许我们自定义队列,比如将多个Ajax请求按顺序执行: ```javascript var queue = $({}); queue.queue('ajax', [ function(next) { $.ajax('url1').done(next); }, function(next) { $....
2. **请求队列**:对于需要控制请求顺序或限制并发量的场景,可以使用请求队列。新的请求会被添加到队列尾部,只有当前正在执行的请求完成后,才会处理下一个请求。 3. **超时和重试机制**:为了处理可能的网络问题...
在现代Web开发中,AJAX...同步请求适用于有依赖关系的场景,队列管理用于按顺序执行请求,而取消请求则在需要忽略之前请求结果时非常有用。掌握这些技巧,能够帮助开发者构建更高效、响应更快的Web应用程序。
`gnarf-jquery-ajaxQueue`是一个专门为了解决这个问题而设计的jQuery插件,它允许开发者创建和管理一系列按顺序执行的Ajax请求。 **1. 插件介绍** `gnarf-jquery-ajaxQueue`的核心功能是创建一个Ajax请求的队列,...
- Ext.Ajax也支持批量请求管理和队列控制,允许开发者组织和顺序执行多个Ajax请求。 8. **预处理和后处理**: - `beforeSend`: 在发送请求前执行的函数,可以取消请求。 - `loadFn`和`unloadFn`: 对于资源加载和...
需要注意的是,由于图片文件较大,网络延迟可能会导致上传过程较长,因此需要适当处理请求队列,避免并发请求过多导致服务器压力过大。 3. **延时机制**:为了避免图片上传时因命名冲突导致的数据覆盖问题,可以...
而ajaxQueue则允许我们将Ajax请求放入队列中,按照预设的顺序依次执行,确保了数据处理的顺序性。这在处理依赖性较强的数据或者需要按序执行的异步操作时,显得尤为关键。 ajaxQueue的核心功能在于其队列管理机制。...
在这个基于Spring的消息队列系统中,前端Web应用通过并发发送Ajax请求来获取数据,后端Action将这些数据放入缓冲队列中,然后由单线程消费者来消费队列中的数据并进行持久化存储。下面我们将深入探讨这个系统的关键...
这导致了在for循环中发送多个AJAX请求时可能出现的问题:由于循环速度过快,请求可能在前一个请求完成之前就被发送,导致请求队列积压,甚至某些请求被浏览器取消。 针对这个问题,有两种主要的解决策略: 1. **...
9. **异步队列**:为了防止多个Ajax请求同时执行导致服务器压力过大,可以使用异步队列来控制请求顺序。 10. **无刷新导航**:使用Ajax实现页面间导航,保持当前状态并避免页面跳转,提升浏览体验。 11. **历史...
6. **异步请求队列**:避免同时发起大量AJAX请求,可能导致服务器压力过大。可以使用队列管理请求,按顺序或优先级执行。 7. **预加载策略**:对于即将需要的数据,可以预先发起请求,减少延迟感。 8. **错误处理*...
这通常通过维护一个请求队列来实现。例如,可以使用jQuery的`ajaxPrefilter`函数来过滤并控制Ajax请求。 ```javascript var pendingRequests = {}; $.ajaxPrefilter(function(options, originalOptions, jqXHR) { ...
没什么复杂的东西,就是用个array对象来做队列,维护ajax请求的顺序。下面给出代码: 代码如下: ;(function($) { $.ajaxQueue = { // 管理ajax请求的队列 requests: new Array(), // 把待发送的ajax请求加入队列 ...
Ajax请求这个文件,获取所有需要加载的图片URL。JSON格式便于数据传输和解析,是常见的API返回格式。 实现步骤大致如下: 1. 在`index.html`中设置图片元素,并将真实的URL存入`data-src`。 2. 在`imageurl.js`中...
解决这一问题的方法之一是在服务器端实施请求队列,确保请求按顺序处理。另一种策略是在客户端使用Promise或async/await语法来管理异步流程,避免回调地狱。 14. **服务器端与AJAX客户端的交互** 为了支持AJAX...