Ajax基础教程

1、XMLHttpRequest 对象

这是一个javascript对象。这是处理所有服务器通信的对象 。

创建对象的过程很简单:

<script language="javascript" type="text/javascript">

  var xmlHttp=new XMLHttpRequest();

</script>

    Ajax技术基本上就是把javascript技术和XMLHttpRequest对象放在Web表单和服务器之间。当用户填写表单时,数据发送给一些 JavaScript 代码而不是 直接发送给服务器。相反,JavaScript 代码捕获表单数据并向服务器发送请求。更好的是,请求是异步发送的,就是说 JavaScript 代码(和用户)不用等待服务器的响应。因此用户可以继续输入数据、滚动屏幕和使用应用程序。然后,服务器将数据返回 JavaScript 代码(仍然在 Web 表单中),后者决定如何处理这些数据。它可以迅速更新表单数据,让人感觉应用程序是立即完成的,表单没有提交或刷新而用户得到了新数据。JavaScript 代码甚至可以对收到的数据执行某种计算,再发送另一个请求,完全不需要用户干预!它可以根据需要自行与服务器进行交互,用户甚至可以完全不知道幕后发生的一切。

2、加入 一些javascript

·获取表单数据:JavaScript 代码很容易从 HTML 表单中抽取数据并发送到服务器。

·修改表单上的数据:更新表单也很简单,从设置字段值到迅速替换图像。

·解析 HTML 和 XML:使用 JavaScript 代码操纵 DOM(请参阅 下一节),处理 HTML 表单服务器返回的 XML 数据的结构。 

对于前两点,需要非常熟悉 getElementById() 方法,

//get element

var phone = document.getElementById("phone").value;

//set element

document.getElementById("order").value = response[0];

3、以 DOM 结束

最后还有 DOM,即文档对象模型。


1、获取 Request 对象

XMLHttpRequest 是 Ajax 应用程序的核心,由于浏览器之争,XMLHttpRequest成了牺牲品之一。因此在不同浏览器上获得 XMLHttpRequest 对象可能需要采用不同的方法。

Microsoft 浏览器 Internet Explorer 使用 MSXML 解析器处理 XML,如果编写的 Ajax 应用程序要和 Internet Explorer 打交道,那么必须用一种特殊的方式创建对象。根据 Internet Explorer 中安装的 JavaScript 技术版本不同,MSXML 实际上有两种不同的版本,因此必须对这两种情况分别编写代码。

清单 3. 在 Microsoft 浏览器上创建 XMLHttpRequest 对象

var xmlHttp = false;
try {
   xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
   try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (e2) {
    xmlHttp = false;
   }
}

处理 Mozilla 和非 Microsoft 浏览器

清单 1 所示的一行简单代码:

var xmlHttp = new XMLHttpRequest();


结合起来支持不同浏览器

清单 4. 以支持多种浏览器的方式创建 XMLHttpRequest 对象

/* Create a new XMLHttpRequest object to talk to the Web server */

var xmlHttp = false;

/*@cc_on @*/
/*@if (@_jscript_version >= 5)

try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}

@end @*/

if (!xmlHttp &amp;& typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

清单5:

Pub.newXMLHttpRequest=function newXMLHttpRequest() {
  var xmlreq = false;
  if (window.XMLHttpRequest) {
  
    xmlreq = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
     
    try {
      
      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e1) {
       
      try {
      
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
          
        alert(e2);
      }
    }
  }
  return xmlreq;
}

2、Ajax的请求/响应

发出请求

您已经有了一个崭新的 XMLHttpRequest 对象,现在让它干点活儿吧。首先需要一个 Web 页面能够调用的 JavaScript 方法(比如当用户输入文本或者从菜单中选择一项时)。接下来就是在所有 Ajax 应用程序中基本都雷同的流程:

1、从 Web 表单中获取需要的数据。 
2、建立要连接的 URL。 
3、打开到服务器的连接。 
4、设置服务器在完成后要运行的函数。 
5、发送请求。 

清单 5. 发出 Ajax 请求


function callServer() {
  // 从表单中获取数据
  var city = document.getElementById("city").value;
  var state = document.getElementById("state").value;
  // 判断是否输入请求数据
  if ((city == null) || (city == "")) return;
  if ((state == null) || (state == "")) return;

  // 建立要连接的URL
  var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);

  // 打开到服务器的连接
  xmlHttp.open("GET", url, true);

  // 设置服务器运行完成后要运行的函数
  xmlHttp.onreadystatechange = updatePage;

  // 发送请求
  xmlHttp.send(null);
}

   xmlHttp.open("GET", url, true);最后一个参数如果设为 true,那么将请求一个异步连接(这就是 Ajax 的由来)

xmlHttp(要记住,这是 XMLHttpRequest 对象实例)的 onreadystatechange 属性可以告诉服务器在运行完成 后(可能要用五分钟或者五个小时)做什么。因为代码没有等待服务器,必须让服务器知道怎么做以便您能作出响应。在这个示例中,如果服务器处理完了请求,一个特殊的名为 updatePage() 的方法将被触发。

3、处理响应

现在只要知道两点:

·什么也不要做,直到 xmlHttp.readyState 属性的值等于 4。

·服务器将把响应填充到 xmlHttp.responseText 属性中。

清单 6. 处理服务器响应

function updatePage() {
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    document.getElementById("zipCode").value = response;
  }
}

4、XMLHttpRequest方法和属性

·open():建立到服务器的新请求。 
·send():向服务器发送请求。 
·abort():退出当前请求。 
·readyState:提供当前 HTML 的就绪状态。 
·responseText:服务器返回的请求响应文本。
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值