您的位置:首页 > 其它

Ajax基础教程

2016-06-07 13:50 351 查看
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 &&
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:服务器返回的请求响应文本。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax