问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Ajax的核心是什么

发布网友 发布时间:2022-04-29 11:23

我来回答

4个回答

热心网友 时间:2022-04-22 11:36

术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。

虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的Web站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。

通常,在J2EE中,开发人员过于关注服务和持久性层的开发,以至于用户界面的可用性已经落后。在一个典型的J2EE开发周期中,常常会听到这样的话,“我们没有可投入UI的时间”或“不能用HTML实现”。但是,以下Web站点证明,这些理由再也站不住脚了:

BackPack
Google Suggest
Google Maps
PalmSphere
所有这些Web站点都告诉我们,Web应用程序不必完全依赖于从服务器重新载入页面来向用户呈现更改。一切似乎就在瞬间发生。简而言之,在涉及到用户界面的响应灵敏度时,基准设得更高了。

定义Ajax

Adaptive Path公司的Jesse James Garrett这样定义Ajax:

Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:

基于CSS标准的表示;
使用Document Object Model进行动态显示和交互;
使用XMLHttpRequest与服务器进行异步通信;
使用JavaScript绑定一切。
这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。
Ajax的工作原理

Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

1 AJAX还是AJAH
* AJAX的很多经典应用其实都是利用xmlhttp空间访问后台程序,后台程序返回脚本用eval回调或者返回简单数据的方式来开发。这样的开发模式的好处是设计简单轻巧,对熟悉dhtml的开发者来说上手会比较块,跨浏览器问题也容易解决,做简单的应用也够用。gmail,google suggest都是用这种方式。但是在我看来gmail已经吧AJAH应用到极限了,更复杂的数据结构用简单数据和回调方式来组织就开始有点力不从心了。

* 前AJAX的一种传统做法是后台返回完整的xml文件后用脚本(利用控件)解析xml后操作页面的dom节点来动态生成页面的一部分。这样作的优点是可以充分利用xml的强大表达能力传输各种数据结构,缺点是页面的dom操作效率不高,而且IE在dom操作的API上bug多多。之所以叫“前AJAX”,因为我们在AJAX这个名词出现前已经这样做了很多年了。

* AJAX另一种传统做法是后台返回完整的xml文件后用脚本(利用控件)解析xml后生成html代码再灌回页面的层中。这样的做法回避了页面dom操作的一些问题,在生成的内容比较多的时候利用一些字符串计算的优化技巧(主要是数组和正则的应用)可以相当高效的生成页面。在我看来这是未来的发展趋势。

我现在的项目主要采用的是第三种方式,结合第二种。我使用的是自己的一个小巧的框架,模拟jsp的语法来生成html代码,但是依赖于浏览器的xml解析API,因此难以跨浏览器。google的开源项目ajaxslt提供了一个纯js的xslt解决方式,功能更强大,可以在页面中局部的应用xslt解析xml生成html或者其他形式的数据,但是带来了xslt这个技术门槛。sf上的ZK似乎也不错,但是带来的是xul这个技术门槛,同时后台被绑定在了J2EE服务器上面。

2 CACHE
如果使用xmlhttp控件,在发起http请求的时候IE会包办cache策略,很多时候更新了数据却无法获得更新后的数据。一开始试图用传统方式在URL后面加随机数来强制更新,但是IE仍然距不发出新的请求。
一个解决方法是在后台写expires: 0或者其他的禁止前台cache的头,但是这样在数据没有更新的时候又会带来不必要的服务器压力、响应延迟和带宽浪费。
一个稍微好一点的解决方法是,前台在提交数据以后,需要强制更新数据的时候:

xmlhttp.setRequestHeader("If-Modified-Since","0");

3 系统错误: -1072896748。
用xmlhttp接收到数据的时候经常是用xmldom.loadXML(xmlhttp.responseXML.xml)来判断返回的数据的正确性,但是如果后台送过来不正确的xml的时候有时回触发-1072896748系统错误。这是因为xmlhttp.responseXML已经没有解析到东西了,我们还试图访问它的xml属性而触发的。
解决的方法是在使用responseXML.xml 或者 responseText的时候要做try/catch:
try{var tmp = xmlhttp.responseXML.xml}catch(ex){err=true;}
有些人喜欢catch的时候判断 exception.description=="系统错误: -1072896748。" , 如果客户端不是简体中文版的系统的时候就判断不到了。其实这个地方只要有异常,都必须走异常处理流程了,不用区分的那么仔细。

热心网友 时间:2022-04-22 12:54

异步传输,将任务向不同的目标传递去处理!

热心网友 时间:2022-04-22 14:29

核心就是利用 “XMLHttp”和服务器进行数据交换。

用的多是js脚本创建xmlhttp对象,然后进行异步获取数据,这样就可以不用刷新页面。

另外返回的数据格式用xml格式,在数据复杂的情况下很好处理。

热心网友 时间:2022-04-22 16:20

JS

AJAX其实就是JS..
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
水利水电工程单元工程施工质量验收评定标准——土石方工程(SL 631... 关于水利水电工程项目划分的规程有哪些?划分的越细越好,感谢大家的帮 ... 水利水电工程的单位工程包括哪些工程? 尖子生学案:生物高中选修3目录 U盘传了数据怎么删除电脑记录如何清除电脑上U盘使用记录 把u盘插电脑怎么删掉记忆如何删掉电脑上插过U盘的记录 win7清除u盘记录 如何清理win7电脑u盘痕迹如何清除电脑上U盘使用记录 麦当劳和华莱士的外卖电话是什么? 一文详解ISO/IEC20000信息技术服务管理体系认证好处、材料、流程 等一套房卖了,再买算不算二套房,如果算契税是多少?- 问一问 XMLHttpRequest是什么? 一般小米运动手表上会有一层原配膜吗? ajax的核心xmlhttprequest表示什么? 五菱双排加长货车有四驱吗? 轻卡后桥原齿9/39齿改9/41齿有什么不一样 轻卡货箱改装,请问有没有什么规范,规定? 17款国五豪沃悍将轻卡可以改定速巡航吗? 19年以前的4.2米蓝牌轻卡要改黄牌吗? 跪求:一辆五十铃轻卡想改装成自卸,请问如何设计?急啊,谢谢。 咱们国产的卡车有没有四驱的?哪个厂家的都可以!!!注意一定要是四驱的卡车!!!谢谢大家提供下资料~! 轻卡可以进到市里吗? 有没有朋友拿轻卡改房车的? 特殊车型点评:AMT自动挡「轻卡」哪家强 把铃木吉姆尼改成轻卡,这设计师的审美观大概是随体育老师吧 轻卡变速箱改装 三菱四驱V8轻卡房车,6.0L+6AT,5人远行不成问题 你好!轻卡后桥速比4.875改4.33还是4.11合适啊?发动机是康明斯2.8变速箱采埃孚6速 三菱轻卡越野房车见过吗?全时四驱+差速锁通过性能强,能住4人 轻卡能改装吗? 房子卖了再买契税算首套吗 AJAX中XMLHttpRequest ajax发送xmlhttprequest请求问题 请问我现在把我唯一的房子卖掉,再买的话契税怎么算? 关于Ajax XMLHttpRequest的问题 把现有的房卖了 再买算首套还是二套。税费什么的有什么不同? 如何创建一个ajax的XMLHttpRequest对象 以前买卖过房,现名下一套卖掉再买,契税付多少? 第一套房子卖掉再买第二套房子税怎么收 ajax基本原理、XMLhttpRequest对象介绍等知识点有高手能够讲讲自己的... 房子卖掉了契税怎么算?是自己亏了还是要买房把这部分钱给我? 如何用ajax来创建一个XMLHttpRequest对象 房子已经卖了过户走了,有贷款记录,再买房契税怎么交 Ajax之XMLHttpRequest对象几种方式的获取求解 第一套房子卖掉后再买套新房,契税怎么要交2 ajax 核心技术是什么? 在沈阳第一套房货款以还清又买第二套房契税怎么算 Ajax的核心对象 关于ajax的一些问题 沈阳房产契税不到两年,卖要交多少税