`
peng_jian_ming
  • 浏览: 260128 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Ajax全面剖析XMLHttpRequest对象(三)

    博客分类:
  • AJAX
阅读更多
四、 发送请求

  在AJAX中,许多使用XMLHttpRequest的请求都是从一个HTML事件(例如一个调用JavaScript函数的按钮点击(onclick)或一个按键(onkeypress))中被初始化的。AJAX支持包括表单校验在内的各种应用程序。有时,在填充表单的其它内容之前要求校验一个唯一的表单域。例如要求使用一个唯一的UserID来注册表单。如果不是使用AJAX技术来校验这个UserID域,那么整个表单都必须被填充和提交。如果该UserID不是有效的,这个表单必须被重新提交。例如,一个相应于一个要求必须在服务器端进行校验的Catalog ID的表单域可能按下列形式指定:

<form name="validationForm" action="validateForm" method="post">
<table>
 <tr><td>Catalog Id:</td>
  <td>
   <input type="text" size="20" id="catalogId" name="catalogId" autocomplete="off" onkeyup="sendRequest()">
  </td>
  <td><div id="validationMessage"></div></td>
 </tr>
</table></form>

  前面的HTML使用validationMessage div来显示相应于这个输入域Catalog Id的一个校验消息。onkeyup事件调用一个JavaScript sendRequest()函数。这个sendRequest()函数创建一个XMLHttpRequest对象。创建一个XMLHttpRequest对象的过程因浏览器实现的不同而有所区别。如果浏览器支持XMLHttpRequest对象作为一个窗口属性(所有普通的浏览器都是这样的,除了IE 5和IE 6之外),那么,代码可以调用XMLHttpRequest的构造器。如果浏览器把XMLHttpRequest对象实现为一个ActiveXObject对象(就象在IE 5和IE 6中一样),那么,代码可以使用ActiveXObject的构造器。下面的函数将调用一个init()函数,它负责检查并决定要使用的适当的创建方法-在创建和返回对象之前。

<script type="text/javascript">
function sendRequest(){
 var xmlHttpReq=init();
 function init(){
  if (window.XMLHttpRequest) {
   return new XMLHttpRequest();
  }
 else if (window.ActiveXObject) {
  return new ActiveXObject("Microsoft.XMLHTTP");
 }
}
</script>

  接下来,你需要使用Open()方法初始化XMLHttpRequest对象-指定HTTP方法和要使用的服务器URL。

var catalogId=encodeURIComponent(document.getElementById("catalogId").value);
xmlHttpReq.open("GET", "validateForm?catalogId=" + catalogId, true);

  默认情况下,使用XMLHttpRequest发送的HTTP请求是异步进行的,但是你可以显式地把async参数设置为true,如上面所展示的。
在这种情况下,对URL validateForm的调用将激活服务器端的一个servlet,但是你应该能够注意到服务器端技术不是根本性的;实际上,该URL可能是一个ASP,ASP.NET或PHP页面或一个Web服务-这无关紧要,只要该页面能够返回一个响应-指示CatalogID值是否是有效的-即可。因为你在作一个异步调用,所以你需要注册一个XMLHttpRequest对象将调用的回调事件处理器-当它的readyState值改变时调用。记住,readyState值的改变将会激发一个readystatechange事件。你可以使用onreadystatechange属性来注册该回调事件处理器。

xmlHttpReq.onreadystatechange=processRequest;

  然后,我们需要使用send()方法发送该请求。因为这个请求使用的是HTTP GET方法,所以,你可以在不指定参数或使用null参数的情况下调用send()方法。

xmlHttpReq.send(null);
分享到:
评论

相关推荐

    Ajax深度剖析,XMLHttpRequest对象大揭秘

    在这篇深度剖析中,我们将揭开XMLHttpRequest对象的神秘面纱,探讨其工作原理、常用方法和实际应用。 XMLHttpRequest对象是Ajax技术的基础,它允许JavaScript在页面不刷新的情况下与服务器进行通信。创建一个...

    全面剖析 Ajax XMLHttpRequest对象

    XMLHttpRequest对象是Ajax技术的核心,它是现代Web应用中用于实现客户端与服务器间异步数据交换的关键组件。在不刷新整个页面的情况下,XMLHttpRequest允许开发者通过JavaScript动态更新网页内容,极大地提升了用户...

    全面剖析XMLHttpRequest对象.doc

    ### 全面剖析XMLHttpRequest对象 #### 引言:AJAX与XMLHttpRequest的革命 XMLHttpRequest对象是现代网络开发中不可或缺的一部分,它是AJAX(Asynchronous JavaScript and XML)技术的核心,使得网页能够在不重新...

    全面剖析Ajax的XMLHttpRequest对象.doc

    Ajax 中的 XMLHttpRequest 对象 Ajax 是一种异步的 JavaScript 与 XML 技术,用于在客户端脚本与服务器之间实现数据交互过程。XMLHttpRequest 对象是 Ajax 的技术基础,尽管现在提供了各种 Ajax 框架,但是理解这个...

    全面剖析XMLHttpRequest对象

    ### 全面剖析XMLHttpRequest对象 #### 引言 随着互联网技术的发展,用户对Web应用的需求日益增长。其中,异步JavaScript与XML(AJAX)技术作为一种新兴的技术手段,在实现客户端脚本与服务器之间高效、无缝的数据...

    全面剖析XMLHttpRequest对象.txt

    ### 全面剖析XMLHttpRequest对象 #### 一、XMLHttpRequest对象简介 XMLHttpRequest是一个非常重要的JavaScript对象,它允许网页向服务器发起异步请求并处理响应数据。这种技术是实现Ajax(Asynchronous JavaScript...

    AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

    ### AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题 #### 背景与问题概述 在使用AJAX技术进行前后端数据交互时,经常会出现中文字符编码的问题,尤其是在使用`XMLHttpRequest`对象发送请求的过程中。例如...

    ajax --XMLHttpRequest

    Ajax技术通过XMLHttpRequest对象实现了网页的异步更新,提高了用户体验。在.NET环境中,Ajax功能得到了广泛支持,开发者可以利用各种工具和库来简化开发流程。对于深入学习,分析Ajax.dll的源码有助于理解底层实现,...

    创建XMLHttpRequest对象

    基于以上分析,我们可以将上述方法封装成一个函数,以便在不同的浏览器环境下创建`XMLHttpRequest`对象: ```javascript function createXmlHttpRequest() { var xmlHttp; try { // 尝试使用原生方式创建 ...

    全面剖析xmlhttprequest

    ### 全面剖析XMLHttpRequest XMLHttpRequest是一种在浏览器端实现异步数据请求的关键技术,它为Web应用提供了更丰富的交互体验。本文将深入探讨XMLHttpRequest的相关知识点,包括其工作原理、状态管理以及如何通过...

    Ajax中XmlHttpRequest实例笔记

    通过实例化XMLHttpRequest对象或使用jQuery的Ajax方法,我们可以实现与服务器的交互,从而创建出更富交互性的Web应用。在实际项目中,通常会结合HTML、CSS、JavaScript以及服务器端技术,共同构建高效、动态的Web...

    XMLHttpRequest对象

    #### 三、XMLHttpRequest对象的主要方法和属性 1. **abort()** - **功能**:取消正在进行中的请求。 - **用途**:当用户取消请求或页面需要跳转时,可以调用此方法来停止当前的HTTP请求。 2. **...

    Ajax通讯原理XMLHttpRequest

    XMLHttpRequest(XHR)对象是Ajax的核心,它允许JavaScript在后台与服务器进行通信,而不会中断用户的界面操作。 ### XMLHttpRequest对象 所有现代浏览器,包括IE5和IE6以上版本,都支持XMLHttpRequest对象。在IE5...

Global site tag (gtag.js) - Google Analytics