`
fuyangchang
  • 浏览: 147197 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

原始的Ajax:直接使用XmlHttpRequest

阅读更多
 

原始的Ajax:直接使用XmlHttpRequest

  如上所述,Ajax的核心是JavaScript对象XmlHttpRequest。下面的示例文章评价系统将带您熟悉Ajax的底层基本知识:http://tearesolutions.com/ajax-demo/raw-ajax.html。注:如果您已经在本地WebLogic容器中安装了ajax-demo.war,可以导航到http://localhost:7001/ajax-demo/raw-ajax.html

  浏览应用程序,参与投票,并亲眼看它如何运转。熟悉了该应用程序之后,继续阅读,进一步了解其工作原理细节。

首先,您拥有一些简单的定位点标记,它连接到一个JavaScriptcastVote(rank)函数。
function castVote(rank) {
var url = "/ajax-demo/static-article-ranking.html";
var callback = processAjaxResponse;
executeXhr(callback, url);
}

  该函数为您想要与之通信的服务器资源创建一个URL并调用内部函数executeXhr,提供一个回调JavaScript函数,一旦服务器响 应可用,该函数就被执行。由于我希望它运行在一个简单的Apache环境中,“cast vote URL”只是一个简单的HTML页面。在实际情况中,被调用的URL将记录票数并动态地呈现包含投票总数的响应。

下一步是发出一个XmlHttpRequest请求:
function executeXhr(callback, url) {
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send(null);
} // branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send();
}
}
}

  如您所见,执行一个XmlHttpRequest并不简单,但非常直观。和平常一样,在JavaScript领域,大部分的工作量都花在确保浏 览器兼容方面。在这种情况下,首先要确定XmlHttpRequest是否可用。如果不能用,很可能要使用Internet Explorer,这样就要使用所提供的ActiveX实现。

executeXhr()方法中最关键的部分是这两行:

req.onreadystatechange = callback;
req.open("GET", url, true);

  第一行定义了JavaScript回调函数,您希望一旦响应就绪它就自动执行,而req.open()方法中所指定的“true”标志说明您想要异步执行该请求。

一旦服务器处理完XmlHttpRequest并返回给浏览器,使用req.onreadystatechange指派所设置的回调方法将被自动调用。
function processAjaxResponse() {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
$('votes').innerHTML = req.responseText;
} else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText);
}
}
}

  该代码相当简洁,并且使用了几个幻数,这使得难以一下子看出发生了什么。为了弄清楚这一点,下面的表格(引用自http://developer.apple.com/internet/webcontent/xmlhttpreq.html)列举了常用的XmlHttpRequest对象属性。

属性

描述

onreadystatechange

每次状态改变所触发事件的事件处理程序

readyState

对象状态值:

  • 0 = 未初始化(uninitialized)
  • 1 = 正在加载(loading)
  • 2 = 加载完毕(loaded)
  • 3 = 交互(interactive)
  • 4 = 完成(complete)

responseText

从服务器进程返回的数据的字符串形式

responseXML

从服务器进程返回的DOM兼容的文档数据对象

status

从服务器返回的数字代码,比如404(未找到)或200(就绪)

statusText

伴随状态码的字符串信息

  现在processVoteResponse()函数开始显示出其意义了。它首先检查XmlHttpRequest的整体状态以保证它已经完成 (readyStatus == 4),然后根据服务器的设定询问请求状态。如果一切正常(status == 200),就使用innerHTML属性重写DOM的“votes”节点的内容。

  既然您亲眼看到了XmlHttpRequest对象是如何工作的,就让我们利用一个旨在简化JavaScript与Java应用程序之间的异步通信的框架来对具体的细节进行抽象。



分享到:
评论

相关推荐

    Ajax简单实例 XMLHttpRequest

    发送请求则使用`send()`方法,对于`GET`请求,直接调用即可: ```javascript xhr.send(); ``` 对于`POST`请求,需要传递数据作为参数: ```javascript xhr.send('key1=value1&key2=value2'); ``` 在实际应用中,...

    VS2008 AJAX控件介绍 AJAX组成及XMLHttpRequest对象

    在VS2008中,开发者可以直接使用AJAX控件,它们封装了XMLHttpRequest对象的复杂操作,简化了开发流程。例如,UpdatePanel控件背后的实现就是基于XMLHttpRequest对象的,它自动处理了请求和响应的处理逻辑,使得...

    Ajax Demo Ajax 示例 XMLHttpRequest 异步 静态

    2. **配置请求**:使用 `open()` 方法指定请求类型(GET 或 POST)、URL 和是否异步。例如,`xhr.open('GET', 'api/time', true)`。 3. **设置回调函数**:通过 `onreadystatechange` 事件监听请求状态的变化。当...

    AjaxXMLHttpRequest_Demo02.zip

    2. **打开连接**:使用XMLHttpRequest对象的`open()`方法指定请求类型(GET、POST等)、URL和是否异步执行。 3. **设置请求头**(可选):如果需要发送数据,可能需要设置Content-Type头。 4. **发送请求**:调用`...

    xmlHttpRequest用法示例ajax

    XMLHttpRequest(简称XHR)是JavaScript中的一个对象,用于在不刷新整个页面的情况下,与服务器进行异步数据交换,这是实现Ajax(Asynchronous JavaScript and XML)技术的基础。在本示例中,我们将深入探讨...

    ajax原理,xmlHttpRequest

    AJAX的主要工作原理是利用`XMLHttpRequest`对象来向服务器发送异步请求,并从服务器获取数据,随后使用JavaScript操作DOM来更新页面中的内容。这种方式使得用户可以在不离开当前页面的情况下与服务器进行交互,大大...

    XMLHttpRequest中文参考手册(学习Ajax必备)

    3. 监听状态变化:使用`onreadystatechange`事件监听XMLHttpRequest的状态。当`readyState`属性改变时,该事件会被触发。当`readyState`等于4时,表示请求已完成。 4. 获取响应:当请求完成,通过`status`属性检查...

    全面剖析 Ajax XMLHttpRequest对象

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

    Ajax:拥抱JSON,让XML走开

    以下是一个简单的示例,展示了如何使用JSON和Ajax进行数据交换: ```html <!DOCTYPE html> <title>Ajax JSON Example function loadJSON() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = ...

    ajax之核心XMLHttpRequest中文参考手册

    以上内容涵盖了XMLHttpRequest的基本使用和相关概念,通过深入理解和实践,可以有效地利用Ajax技术来提升网页的用户体验。在实际开发中,还可以结合jQuery、axios、fetch等库,简化Ajax的使用流程。

    ajax-proxy:拦截es6代理重构XMLHTTPRequest的Ajax代理

    ajax-proxy使用起来十分简单,只有两个方法proxyAjax和unProxyAjax ,只要您对XMLHttpRequest有所了解,就能很快上手使用。 proxyAjax(proxyMap) proxyMap :代理对象, key为需要代理的属性或方法, value具体...

    js ajax XMLHttpRequest的使用

    在本篇内容中,我们将深入探讨XMLHttpRequest对象的使用,它是实现AJAX的核心。 首先,XMLHttpRequest(简称XHR)对象是JavaScript内置的一个对象,用于在后台与服务器进行异步数据通信。它的工作原理是创建一个XHR...

    AJAX XMLHttpRequest慨述

    如果运行在非IE浏览器中,则直接使用`new XMLHttpRequest()`创建对象。 #### 四、XMLHttpRequest对象的方法与属性 XMLHttpRequest对象提供了多个方法和属性,用于控制请求的发送、接收服务器响应以及处理数据。 -...

    面向 Java 开发人员的 Ajax: 结合 Direct Web Remoting 使用 Ajax

    DWR允许Java对象直接在客户端JavaScript中调用,消除了传统Ajax需要通过XMLHttpRequest对象手动处理HTTP请求的繁琐工作。 首先,我们来看一下`README`文件。这个文件通常包含了项目的基本信息、安装指南和使用方法...

    XMLHttpRequest使用小例子

    在实际项目中,XMLHttpRequest常常被用于AJAX(Asynchronous JavaScript and XML)技术,尽管现在的大多数响应数据并非XML,而是JSON或者其他格式。XMLHttpRequest仍然是现代Web开发中不可或缺的一部分,为动态网页...

    ajax客户端XMLHttpRequest 实例

    **Ajax 客户端 XMLHttpRequest 实例详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现了异步更新。...

    ajax原始实现

    综上所述,Ajax的原始实现主要涉及XMLHttpRequest对象的使用,包括初始化请求、发送请求、处理响应等步骤。在实际应用中,还需考虑跨域、兼容性和UI更新等问题。随着技术进步,开发者可以选择更现代的API和工具来...

    JS使用AjAX实例,JQUERY使用AJAX实例

    在JavaScript中,我们通常使用`XMLHttpRequest`对象或者jQuery库来实现AJAX请求。 1. **XMLHttpRequest对象**: - 创建XMLHttpRequest对象:`var xhr = new XMLHttpRequest();` - 打开连接:`xhr.open('GET'/'...

    XmlHttpRequest对象直接访问与通过Soap协议访问WebSevice详解示例

    本示例将深入探讨如何使用XMLHttpRequest直接访问Web服务以及通过SOAP(Simple Object Access Protocol)协议进行访问。 首先,让我们了解XMLHttpRequest的基本用法。创建一个XMLHttpRequest实例,然后设置其...

Global site tag (gtag.js) - Google Analytics