AJAX的核心
XMLHttpRequest是Ajax技术体系中最为核心的技术。缺少了它,Ajax的其余技术就无法成为一个有机的整体,将会土崩瓦解。
1999年上半年,MS在IE 5.0版中首次支持这种技术,他们是通过一个名为XMLHTTP的ActiveX对象来支持这种技术的。XMLHTTP对象使得页面中的脚本具有了在不刷新页面的情况下直接与服务器通信的能力。在此之前,能够做到这件事的唯一技术是通过IFrame,然而这超越了IFrame最初设计的目标,是一种存在潜在危险的hack做法。既然已经有很多不守规矩的开发者做出了越轨的行为,并且事实证明这样的开发方式确实非常有价值,也不会对系统安全造成什么破坏。于是MS就从善如流地发明了XMLHTTP对象,专门用来为浏览器中的脚本(在IE中就是JScript和VBScript)提供这样的服务器通信能力。
XMLHTTP对象大受欢迎,到了2000年它几乎已经成为了事实上的标准。Mozilla在这一年实现了具有相同接口的原生对象,称作XMLHttpRequest对象。后来Opera、Safari等浏览器也都相继实现了XMLHttpRequest对象。现在XMLHttpRequest是这个技术的正式名称。
Ajax所依赖的技术之中唯一一个尚未正式标准化的部分就是XMLHttpRequest,不过现在W3C已经将其列入了工作草案,应该很快就会成为正式的标准。
目前在IE 5.0、IE 6.0中创建XMLHttpRequest对象的语法如下:
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
而在非IE浏览器中创建XMLHttpRequest对象的语法如下:
var xmlhttp = new XMLHttpRequest();
M$在IE 7.0中将能够同时支持ActiveX对象和原生的XMLHttpRequest对象的创建方法,这是一个从善如流之举。因此,当IE 7.0普及之后,创建XMLHttpRequest对象将可以使用完全相同的语法。
XMLHttpRequest与服务器通信有两种方式:同步方式和异步方式。同步方式的调用非常简单,但是仅仅适用于数据量非常少的场合。如果数据量很大,会造成用户界面很长一段时间的停顿,这当然会损害Web应用的可用性。为了不影响可用性,Ajax应用中一般都使用异步方式来与服务器通信。用来设置同步和异步方式的是XMLHttpRequest对象的open方法的第3个参数,这个参数为true代表异步,为false代表同步。例如:
xmlhttp.open("GET", "http://www.blogjava.net/dlee/Rss.aspx", true);
如果是使用异步方式来进行通信,还需要设置一个回调函数,当数据返回时系统会调用这个回调函数。通过为XMLHttpRequest对象的onreadystatechange
相关文档:
简单的Ext.Ajax. request示例
var requestConfig = {
url :'loginServer.jsp',//请求的服务器地址
params : {userName : 'tom',password : '123'},//请求参数 ......
//平常调用javascript方法
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert'Weclome!!!');</script>");
背景不为白色的方法:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('添加失败,请联系技术员!') ......
最近,写了个ajax程序。实现了定位地图,因为了ajax的动态请求,所以,地图是实时扫描的,但是,问题困惑了半个月,今天在和学长聊天的时候,终于想清楚了。
ajax在本程序中的任务就是对八个读卡器点进行动态请求数据库数据,然后,根据数据库索引数扫描地图上该点的 ......
$.ajax({
type: "POST", //访问WebService使用Post方式请求
......
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。
废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).
1. ......