- 浏览: 194464 次
- 性别:
- 来自: QD
文章分类
- 全部博客 (127)
- Struts2 (8)
- Web (27)
- 计算机基础 (2)
- 面试 (2)
- JQuery (4)
- MySQL (1)
- SQL (1)
- AJAX (3)
- Java (17)
- Javascript (36)
- 情感 (0)
- Oracle (7)
- Spring (5)
- FreeMarker (2)
- JSON (1)
- 表达式 (1)
- 线程 (4)
- WebService (10)
- MyEclipse (2)
- LDAP (1)
- Tomcat (1)
- NIO (1)
- Linux (1)
- ExtJS (4)
- Android (1)
- Dojo (2)
- Maven (9)
- Ant (7)
- 分布式 (1)
- Intellij IDEA (1)
最新评论
-
northc:
米饭军 写道如果文件已存在怎样避免应该会覆盖的
用Ant scp往远程linux传文件 -
米饭军:
如果文件已存在怎样避免
用Ant scp往远程linux传文件 -
luis025:
不支持列隐藏 硬伤
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建一个XMLHttpRequset的对象池,如果池里有空闲的对象,则使用此对象,否则将创建一个新的对象。
代码如下:
var XMLHttp = { //定义第一个属性,该属性用于缓存XMLHttpRequest对象数组 XMLHttpRequestPool:[], //对象的第一个方法,该方法用于返回一个XMLHttpRequest对象 getInstance:function(){ var len = this.XMLHttpRequestPool.length; //从XMLHttpRequestPool缓冲池中取出一个空闲的XMLHttpRequest对象 for(var i=0;i<len;i++){ //如果XMLHttpRequest的readyState的状态为0或者为4,都表示当前的对象 //XMLHttpRequest对象为闲置的对象 if(this.XMLHttpRequestPool[i].readyState==0 || this.XMLHttpRequestPool[i]==4){ return this.XMLHttpRequestPool[i]; } } //如果没有空闲对象,将再次创建一个XMLHttpRequest对象 this.XMLHttpRequestPool[this.XMLHttpRequestPool.length]= this.createXMLHttpRequest(); return this.XMLHttpRequestPool[this.XMLHttpRequestPool.length-1]; }, //创建新的XMLHttpRequest对象 createXMLHttpRequest:function(){ var xmlHttpRequest = false; //Mozilla,fireFox,Operal浏览器 if(window.XMLHttpRequest){ //针对FireFox, Mozillar, Opera, Safari, IE7, IE8 xmlHttpRequest = new XMLHttpRequest(); //针对某些特定版本的mozillar浏览器的BUG进行修正 if(xmlHttpRequest.overrideMimeType){ xmlHttpRequest.overrideMimeType("text/xml"); } }else if(window.ActiveXObject){ //针对IE6, IE5, IE5.5 //两个可以用于创建XMLHttpRequest对象的控件名称,保存在js的数组中 //排在前面的版本较新 var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; for(var i = 0; i < activexName.length; i++){ try { //取出一个控件名进行创建,如果创建成功就终止循环 //如果创建失败,会抛出异常,捕捉异常后,可以继续循环,继续尝试创建 xmlHttpRequest = new ActiveXObject(activexName[i]); break; } catch(e) { xmlHttpRequest = false; } } //Mozilla某些版本没有readyState属性 if(xmlHttpRequest.readyState==null){ //直接设置readyState为0 xmlHttpRequest.readyState = 0; //没有readyState属性的浏览器,将load动作与下面的函数关联起来 xmlHttpRequest.addEventListener("load",function(){ if(typeof(xmlHttpRequest.onreadystatechange =="function")){ xmlHttpRequest.onreadystatechange(); } },false); } } if (!xmlHttpRequest || typeof XMLHttpRequest == 'undefined') { Alert("你的浏览器不支持xmlHttpRequest对象!"); return; } return xmlHttpRequest; }, //定义对象的第三个方法,发送请求,参数说明 //method 为发送请求的方法(POST,GET),地址,数据,回调函数 sendRequest:function(method,url,data,async,callback){ var xmlHttpRequest = this.getInstance(); if(xmlHttpRequest){ try{ //加随机数防止缓存,主要目的是防止直接从浏览器读取数据 if(url.indexOf("?")>0){ url+="&time="+new Date().getTime(); }else{ url+="?time="+new Date().getTime(); } //打开与服务器的连接 xmlHttpRequest.open(method,url,async); //设置状态改变的回调函数 xmlHttpRequest.onreadystatechange = function(){ //当服务器的响应完成并获得正常的服务器响应时 if(xmlHttpRequest.readyState==4){ if(xmlHttpRequest.status==200){ callback(xmlHttpRequest); } } } //如果采用POST请求 if(method=="POST"){ //设置请求的头 xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttpRequest.send(data); } //如果采用GET请求 if(method=="GET"){ xmlHttpRequest.send(null); } }catch(e){ alert(e); } } } };
大家看到这个xmlHttpRequest 池其实是创建了一个javascript对象,那面调用的时候只需直接调用这个对象的方法即可。
调用方法:
把以上代码copy保存到一个js文件里,假设取名ajaxpool.js,在html中插入以下代码即可
<script type=”text/javascript” src=”ajaxpool.js” ></script> <script type=”text/javascript” > var requestText; //用于接受响应结果 XMLHttp.sendRequest("GET","getMenu",null,false,function(xmlHttpRequest){requestText=xmlHttpRequest.responseText;}); </script>
XMLHttp.sendrequest()方法共5个参数:
1、请求方式。GET,POST
2、请求URL
3、sent的数据,GET方式时一般为NULL,POST方式时,其值为发送的数据
4、true异步,false同步
5、回调函数
通过以上代码就完成了一次Ajax请求,同一页面可多次调用XMLHttp.sendrequest()方法产生多次请求
发表评论
-
Ext Toolbar换行
2012-06-21 09:02 01.var oneTbar=new Ext.Toolba ... -
禁止select控件選擇
2012-06-20 20:06 0禁止select控件選擇 大家知道, 對於HTML控件 ... -
几种压缩算法原理介绍
2012-05-25 20:04 1369先给出一个JS实现的ZIP:http://stuartk ... -
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
2012-03-12 17:00 10908需要将ExtJS Grid 导出 Excel 的同学可以试一试 ... -
Ext Js 4.x 扩展自己的XType
2012-03-03 14:26 1564如果想用自己定制的XType(比如这里想用一个Obj存 ... -
(转)Javascript中大括号“{}”的多义性
2012-02-25 11:21 1015JS中大括号有四种语义作用语义1,组织复合语句,这是最常 ... -
function sleep
2012-02-17 19:16 890//毫秒 (function sleep(t){ ... -
不用递归,循环算0-9999之和(js)
2012-02-17 19:15 898var i=0,sum=eval(new Arra ... -
Augment.js 为旧浏览器增加现代Javascript的功能支持
2012-01-18 12:06 1084index: http://olivernn. ... -
Javascript中的~和~~
2011-12-30 15:58 886<script type="text/j ... -
js中的onchange和onpropertychange
2011-12-28 11:26 1851当一个HTML元素的属 ... -
DOCTYPE! HTML PUBLIC 声明规范
2011-12-26 17:38 1310DOCTYPE的常用声明:按照 HTML 4.01 ... -
parentNode、parentElement,childNodes、children
2011-12-26 17:38 936parentNode、parentElement,childN ... -
关于JS中的constructor与prototype
2011-12-22 19:53 1015我们都知道,在JS中有一个function的东西。一般人 ... -
各浏览器对document.getElementById等方法的实现差异
2011-12-21 13:15 935本文来自:http://www.cnblogs.com/sna ... -
全世界最短的IE判定
2011-12-20 15:45 808var ie = !-[1,]; ... -
document.getElementsByClassName的理想实现
2011-12-20 14:41 1446来自: 司徒正美 blog http://www.cnblo ... -
浏览器支持的JS版本及JS对象图
2011-12-20 10:38 1090来自zh.wikipedia.org的JavaScript ... -
JS判断浏览器能力
2011-12-15 20:47 1059对象/特征检测法 该方法是一种判断浏览器能力(而非浏览器 ... -
onunload和onbeforeunload区别
2011-12-15 18:54 981Onunload,onbeforeunload都是在刷 ...
相关推荐
`说明.txt`文件可能是对Ajax对象池实现的详细解释或者使用指南,包括如何初始化对象池,如何从池中获取和归还Ajax对象,以及如何配置对象池的大小和回收策略等。通常,对象池的大小需要根据应用的实际需求进行调整,...
ajax XMLHttpRequest。。。。。。
### AJAX传递List对象数组知识点详解 #### 一、前言 在Web开发中,前后端交互是必不可少的一个环节。AJAX作为一种实现异步加载数据的技术,可以有效地提升用户体验。本篇将详细介绍如何通过AJAX来传递一个List对象...
在实际应用中,Ajax池通常是一个JavaScript对象或模块,它维护了一个队列,用于存储待处理的Ajax请求。当一个请求被创建时,它会被添加到队列中。然后,池会按照预设的并发限制(比如,最多同时发送5个请求)来执行...
Ajax 基本对象的属性和方法 Ajax 基本对象是指在异步 JavaScript 和 XML(AJAX)技术中使用的基本对象,该对象提供了一些属性和方法来处理 XML 的 DOM 元素和遍历 XML 的 DOM 元素。下面是 Ajax 基本对象的属性和...
Ajax核心对象XMLHTTPRequest详细参数及例子
2. **Ajax请求**:利用JavaScript的XMLHttpRequest对象或者更现代的Fetch API,向服务器发送异步请求,携带用户名作为参数。 3. **服务器处理**:后端接收到请求,查询数据库中是否有相同的用户名。 4. **响应反馈**...
简单使用创建ajax对象,几乎试用所有浏览器。
标题中的“下载json,ajax传送对象的好帮手”指的是利用JSON处理和传输AJAX请求中的数据对象。AJAX允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容,极大地提高了用户体验。而JSON因为其...
本文将深入探讨如何使用jQuery的AJAX方法发送JSON对象数组到Struts2的Action,并在后端进行处理。 首先,我们了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...
"Ajax返回JSON对象"这个主题聚焦于Ajax如何处理JSON(JavaScript Object Notation)数据格式,这是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 1. **Ajax基础**: - **异步通信**:...
下面将详细探讨C#、Ajax以及数据库连接池的相关知识点。 一、C#与Ajax的结合使用 1. C# Web应用基础:C#通常与ASP.NET框架一起使用,构建服务器端的Web应用。通过编写C#代码,开发者可以处理HTTP请求,生成动态...
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个...解决的办法就是创建一个 XMLHttpRequset的对象池,如果池里有空闲的对象,则使用此对象,否则将创建一个新的对象。本文将为大家介绍具体的解决方法。
现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 资源界面:资源下载:
ASP.NET 使用 Ajax 返回 Json 对象的方法 本文档介绍了使用 ASP.NET 实现 Ajax 返回 Json 对象的方法。通过创建一个 HTML 页面和一个 JS 文件,演示了如何使用 Ajax 提交表单数据并返回 Json 对象。 知识点一:...
通过理解AJAX的组成和XMLHttpRequest对象的工作原理,开发者可以更好地利用这些控件,创建出更动态、更高效的网页应用。在实际开发中,结合VS2008的AJAX控件和AJAX框架,可以大大简化代码编写,提高开发效率。
**Ajax对象及JSON应用** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它的核心是JavaScript对象——XMLHttpRequest,这个对象允许我们与服务器进行...
Ajax的核心是JavaScript对象XMLHttpRequest,它允许在不刷新整个页面的前提下与服务器通信。** ### **Ajax 原理** Ajax的原理主要包含以下几个步骤: 1. **创建 XMLHttpRequest 对象**:这是Ajax的基础,现代浏览器...
Ajax 的核心是 JavaScript 对象 XmlHttpRequest。Ajax 采用异步交互过程,在用户与服务器之间引入一个中间媒介,从而消除了网络交互过程中的处理—等待—处理—等待缺点。 Ajax 引擎用 JavaScript 语言编写,通常藏...