- 浏览: 413392 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
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 2045引用条件编译介绍 在IE有一个几乎没人知道的特性--“条件编 ... -
兼容IE和firefox,获得上传文件绝对路径
2011-10-17 09:59 6289firefox为了浏览器安全性,不能获得上传文件绝对路径。。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 1322假如jsp页面里一个strTest的String对象,值为“m ... -
另类的实现逻辑问题
2011-10-07 11:23 1226转自http://www.ilovejs.net/archiv ... -
摘抄--从function的定义看JavaScript的预加载
2011-09-28 10:59 997http://www.nowamagic.net/librar ... -
关于无法delete文件
2011-09-26 17:12 1390File f=new File(targetDir+&qu ... -
firefox上传文件
2011-09-23 15:19 2144先看一个实例: jsp <tr class=" ... -
js 自行函数
2011-09-19 16:46 1005有很多方法立即执行匿名函数,简单的整理就有下面三种的典型方式( ... -
IE和FF中获取兄弟节点
2011-09-16 14:26 1479function getNextNode(target){ ... -
设置有iframe的页面根据窗口大小自动调整大小
2011-09-16 14:24 3046有时页面会出现莫名的不能占满页面的情况 window.on ... -
js中style属性以及仿制window.alert()功能和自定义
2011-09-14 17:32 3614JS操作css 下面是引用的。。很不错的总结、、 引用 使用j ... -
css区分各个浏览器和css Hack
2011-09-07 16:29 1283<SCRIPT LANGUAGE="Jav ... -
HTML标签的<button>导致数据在firefox自动提交和在firefox里面弹出div窗口失败
2011-09-07 15:22 1760项目中遇到这么个问题 项目中想利用div制造弹出窗口的操作 c ... -
转:Div自适应高度
2011-08-04 14:49 1471由于设计页面需要,要把两个并排显示的div实现一样高的效果,n ... -
在eclipse里jsp编译后的java和class文件的位置
2011-08-03 14:08 10205eclipse版本不一样,位置也不一样 第一种:(网上搜到的) ... -
iframe的属性:document和Document以及Document的属性和iframe在各个浏览器获得内部文档的写法
2011-08-03 11:37 2012.document引用到是的 iframe所在页面对象, .D ... -
浏览器加载显示html的顺序
2011-08-02 15:36 2277其实浏览器加载显示html的顺序是按下面的顺序进行的: 1、I ... -
div+ajax实现类似iframe功能
2011-08-01 17:03 7812function showAtRight(url) { ...
相关推荐
AJAX在使用的过程中会遇到一个问题,当用户短时间内执行了多个异步请求的时候,如果前一个请求没完成,将会被取消...AJAX队列很简单,创建一个数组存储请求队列,数组中每一项又是一个请求参数数组,当用户执行请求时
多个ajax请求相互依赖,必须有先后顺序。 多个请求被同时发送,只需要最后一个请求。 1.情况1-多个ajax请求同时发送,相互无依赖 ajaxQueue1文件夹 ajaxQueue-requireJS //为符合AMD规范的文件,可以直接作为...
第2种case 应用场景: 多个ajax请求,需要顺序执行,后一个ajax请求的执行参数是前一个ajax的结果。例如: 用户登录后我们发送一次请求得到用户的应用ID,然后利用应用ID发送一次请求得到具体的应用内容(例子虽然...
没什么复杂的东西,就是用个array对象来做队列,维护ajax请求的顺序。下面给出代码: 代码如下: ;(function($) { $.ajaxQueue = { // 管理ajax请求的队列 requests: new Array(), // 把待发送的ajax请求加入队列 ...
ajax请求异步队列加载 我们在开发程序的时候通常会碰到使用ajax加载数据显示到列表的情况。ajax默认使用异步加载(async:true)。为什么不使用同步呢,因为ajax同步加载会UI渲染线程阻塞的问题。通常表现为在加载...
支持XML,JSON和TEXT的格式Ajax数据传输。...内置Submission队列:所有的AJAX请求将会发送到正确的顺序中,所有请求都会被存储在队列中防止被覆盖。提供一个帮助你在运行期进行调试的可视化操作界面。
经典类与新式类的继承顺序 继承实例讲解 多态实例讲解 本节作业之选课系统开发 第7周 心灵分享 上节回顾 静态方法、类方法、属性方法 课堂扯淡 深入讲解类的特殊成员方法__init__等 深入讲解类的特殊成员方法__new...
由于本书的结构是层进式的,章节之间有一定的关联,因此建议读者按章节的编排顺序逐章阅读。但在阅读本书的示例时,请尽量不要照抄书中的所有示例,而是重在理解代码的实现思路,自己动手开发相似功能的应用,并...
这种类型的creator采用BSF执行脚本语言并返回bean.例如 ... import org.apache.commons.validator.EmailValidator; return EmailValidator.getInstance(); ... 4 Signatures in dwr.xml Signatures...
AJAX技术还使得软件更好地实现分布性功能,在一个企业内只要一个人下载了AJAX引擎,其它企业内部的人员,就可以共享该资源了。AJAX技术遵守REST准则的应用程序中简单和可伸缩的架构,凡是采用AJAX技术的页面简洁而又...
开发人员借此可以使用无法立即获得的返回值(如异步Ajax请求的返回结果),而且第一次能够附加多个事件处理器。 例如,使用了新的jQuery内部Ajax API就可以实现下面的代码了: // Assign handlers immediately ...
09 基于tcp实现远程执行命令测试结果 10 粘包现象 11 粘包解决方法 第31章 01 上节课复习 02 socketserver实现并发 03 socketserver模块介绍 04 socketserver源码分析tcp版本 05 socketserver源码分析udp版 06 ftp...
• jQuery 的 action() 执行对元素的操作 示例 $(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有段落 $("p.test").hide() - 隐藏所有 class="test" 的段落 $("#test").hide() - 隐藏所有 id="test" 的元素 ...
完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算...