Ajax的工作原理 Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
- 动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
- 提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
- 消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
- 直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。
一切皆有可能!但愿它能够激发您开始开发自己的基于Ajax的站点。然而,在开始之前,让我们介绍一个现有的Web站点,它遵循传统的提交/等待/重新显示的范例,我们还将讨论Ajax如何提升用户体验。
Ajax可用于那些场景?——一个例子:MSN Money页面
前几天,在浏览MSN Money页面的时候,有一篇关于房地产投资的文章引起了我的好奇心。我决定使用站点的“Rate this article”(评价本文)功能,鼓励其他的用户花一点时间来阅读这篇文章。在我单击vote按钮并等待了一会儿之后,整个页面被刷新,在原来投票问题所在的地方出现了一个漂亮的感谢画面。
而Ajax能够使用户的体验更加愉快,它可以提供响应更加灵敏的UI,并消除页面刷新所带来的闪烁。目前,由于要刷新整个页面,需要传送大量的数据,因为必须重新发送整个页面。如果使用Ajax,服务器可以返回一个包含了感谢信息的500字节的消息,而不是发送26,813字节的消息来刷新整个页面。即使使用的是高速Internet,传送26K和1/2K的差别也非常大。同样重要的是,只需要刷新与投票相关的一小节,而不是刷新整个屏幕。
让我们利用Ajax实现自己的基本投票系统。
原始的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”标志说明您想要异步执行该请求。
相关推荐
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.6.1.min.js"></script> 官网jquery压缩版引用地址: <script src="https://code.jquery.com/jquery-3.6.1.min.js"></script> 下载后更改文件名,...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子...02.<web-app xmlns:xsi=...
jquery + ajax技术实现实时数据更新 官网下载echarts的js文件,找到需要的示例对代码进行修改 后端部分设计 utils.py 与数据库交互 flask的基本运用:static文件夹放css和js文件,templates文件夹下放
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
sockjs.min.js,stomp.min.js,websocket, https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.min.js ...http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js 下载或者直接引入网络资源?
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
更多资料,请到“大家论坛 http://club.topsage.com”下载 Ajax+PHP程序设计实战详解 part01:http://download.csdn.net/source/3525609 part02:http://download.csdn.net/source/3525714 part03:...
CKEditor+CKFinder使用与配置:http://www.cnblogs.com/dmeiyang002/p/3808307.html 官网地址:http://ckeditor.com CKEditor下载地址:http://ckeditor.com/download CKFinder(免费版本)下载地址:...