15年来,为全国50万+企业提供互联网数字化基础应用服务。
微网小程序
电商运营
关于我们
付款方式
荣誉资质
业务提交
代理合作
知 识
400-1100-266
9:00-24:00(工作日)
首 页
企业400电话
Hot
网站建设
商标✡知产
网络优化推广
热
AI电话机器人
呼叫中心
彩铃•短信
增值拓展业务
新
主页
>
知识库
> Ajax技术(WEB无刷新提交数据)-
Ajax技术(WEB无刷新提交数据)-
热门标签:
团购网站
阿里云
科大讯飞语音识别系统
Linux服务器
银行业务
服务器配置
电子围栏
Mysql连接数设置
Ajax内部交流文档一、使用Ajax的主要原因
1、通过适当的Ajax应用达到更好的用户体验;
2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
二、引用
Ajax这个概念的最早提出者Jesse James Garrett认为:
Ajax是Asynchronous JavaScript and XML的缩写。
Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括
使用XHTML和CSS标准化呈现;
使用DOM实现动态显示和交互;
使用XML和XSLT进行数据交换与处理;
使用XMLHttpRequest进行异步数据读取;
最后用JavaScript绑定和处理所有数据;
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。
并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,
只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。
三、概述
虽然Garrent列出了7条Ajax的构成技术,但个人认为,所谓的Ajax其核心只有JavaScript、XMLHTTPRequest和DOM,
如果所用数据格式为XML的话,还可以再加上XML这一项(Ajax从服务器端返回的数据可以是XML格式,也可以是文本等其他格式)。
在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端,
每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、
只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。
而使用Ajax后用户从感觉上几乎所有的操作都会很快响应没有页面重载(白屏)的等待。
1、XMLHTTPRequest
Ajax的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新更新页面),
这一特点主要得益于XMLHTTP组件XMLHTTPRequest对象。这样就可以向再发桌面应用程序只同服务器进行数据层面的交换,
而不用每次都刷新界面也不用每次将数据处理的工作提交给服务器来做,
这样即减轻了服务器的负担又加快了响应速度、缩短了用户等候时间。
最早应用XMLHTTP的是微软,IE(IE5以上)通过允许开发人员在Web页面内部使用XMLHTTP ActiveX组件扩展自身的功能,
开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。
这个功能是很重要的,因为它帮助减少了无状态连接的痛苦,它还可以排除下载冗余HTML的需要,从而提高进程的速度。
Mozilla(Mozilla1.0以上及NetScape7以上)做出的回应是创建它自己的继承XML代理类:
XMLHttpRequest类。Konqueror (和Safari v1.2,同样也是基于KHTML的浏览器)也支持XMLHttpRequest对象,
而Opera也将在其v7.6x+以后的版本中支持XMLHttpRequest对象。对于大多数情况,
XMLHttpRequest对象和XMLHTTP组件很相似,方法和属性也类似,只是有一小部分属性不支持。
XMLHttpRequest的应用:
// IE support
if (window.ActiveXObject !window.XMLHttpRequest) {
window.XMLHttpRequest = function() {
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}
服务器进程返回数据的文本处理
GET Requests
Example:
var req = new XMLHttpRequest();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4 req.status == 200) {
alert(req.responseText);
}
};
req.open('GET', 'pageurl.html');
req.send(null);
}
POST Requests
Example:
var req = new XMLHttpRequest();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4 req.status == 200) {
alert(req.responseText);
}
};
req.open('POST', 'scripturl.cgi');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send('var1=data1var2=data2');
}
XMLHttpRequest 对象方法描述
abort() 停止当前请求
getAllResponseHeaders() 作为字符串返问完整的headers
getResponseHeader("headerLabel") 作为字符串返问单个的header标签
open("method","URL"[,asyncFlag[,"userName"[, "password"]]]) 设置未决的请求的目标 URL, 方法, 和其他参数
send(content) 发送请求 (param一定要这样传,因为后台得不到hidden params)
setRequestHeader("label", "value") 设置header并和请求一起发送 ('post'方法一定要 )
XMLHttpRequest 对象属性描述
onreadystatechange 状态改变的事件触发器(异步处理时要req.open('POST', 'servlet')或req.open('POST', 'servlet',true))
readyState 对象状态(integer):
0 = 未初始化
1 = 读取中
2 = 已读取
3 = 交互中
4 = 完成
responseText 服务器进程返回数据的文本版本
responseXML 服务器进程返回数据的兼容DOM的XML文档对象
responseBody 服务器返回的主题(非文本格式)
responseStream 服务器返回的数据流
status 服务器返回的状态码, 如:404 = "文件末找到" 、200 ="成功"
statusText 服务器返回的状态文本信息
2、JavaScript
JavaScript是一在浏览器中大量使用的编程语言,,他以前一直被贬低为一门糟糕的语言(他确实在使用上比较枯燥),
以在常被用来作一些用来炫耀的小玩意和恶作剧或是单调琐碎的表单验证。但事实是,他是一门真正的编程语言,
有着自已的标准并在各种浏览器中被广泛支持。
3、DOM
Document Object Model。
DOM是给 HTML 和 XML 文件使用的一组 API。它提供了文件的结构表述,让你可以改变其中的內容及可见物。
其本质是建立网页与 Script 或程序语言沟通的桥梁。
所有WEB开发人员可操作及建立文件的属性、方法及事件都以对象来展现(例如,document 就代表“文件本身“这个对像,
table 对象则代表 HTML 的表格对象等等)。这些对象可以由当今大多数的浏览器以 Script 来取用。
一个用HTML或XHTML构建的网页也可以看作是一组结构化的数据,这些数据被封在DOM(Document Object Model)中,
DOM提供了网页中各个对象的读写的支持。
function loadCnt(){
var req=new XMLHttpRequest();
if (req) {
req.onreadystatechange=function() {
if (req.readyState==4 req.status==200) {
if(req.responseText!=-1){
nodes=req.responseXML.documentElement.childNodes;
browse_cnt.innerText=nodes.item(0).text;
comment_cnt.innerText=nodes.item(1).text;
score_cnt.innerText=nodes.item(2).text;
}
}
}
req.open('POST', '$path/AjaxCntCtrl');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("photo_id="+document.form1.photo_id.value);
}
}
//responseXML.documentElement.getAttribute('stat') == 'ok'
//responseXML.documentElement.getElementsByTagName('title')[0].firstChild.data;
4、XML
可扩展的标记语言(Extensible Markup Language)具有一种开放的、可扩展的、可自描述的语言结构,
它已经成为网上数据和文档传输的标准。它是用来描述数据结构的一种语言,就正如他的名字一样。
他使对某些结构化数据的定义更加容易,并且可以通过他和其他应用程序交换数据。
!--?xml version=\"1.0\" encoding=\"UTF-8\" ?>
photo_cnt>
browse_cnt>6/browse_cnt>
comment_cnt>6/comment_cnt>
score_cnt>6/score_cnt>
/photo_cnt-->
5、综合
Jesse James Garrett提到的Ajax引擎,实际上是一个比较复杂的JavaScript应用程序,用来处理用户请求,
读写服务器和更改DOM内容。
JavaScript的Ajax引擎读取信息,并且互动地重写DOM,这使网页能无缝化重构,
也就是在页面已经下载完毕后改变页面内容,这是我们一直在通过JavaScript和DOM在广泛使用的方法,
但要使网页真正动态起来,不仅要内部的互动,还需要从外部获取数据,在以前,
我们是让用户来输入数据并通过DOM来改变网页内容的,但现在,XMLHTTPRequest,
可以让我们在不重载页面的情况下读写服务器上的数据,使用户的输入达到最少。
基于XML的网络通讯也并不是新事物,实际上FLASH和JAVA Applet都有不错的表现,现在这种富交互在网页上也可用了,
基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序。
Ajax是传统WEB应用程序的一个转变。以前是服务器每次生成HTML页面并返回给客户端(浏览器)。
在大多数网站中,很多页面中至少90%都是一样的,比如:结构、格式、页头、页尾、广告等,
所不同的只是一小部分的内容,但每次服务器都会生成所有的页面再返回给客户端,这无形之中是一种浪费,
不管是对于用户的时间、带宽、CPU耗用,还是对于ISP的高价租用的带宽和空间来说。如果按一页来算,
只能几K或是几十K可能并不起眼,但像SINA每天要生成几百万个页面的大ISP来说,可以说是损失巨大的。
而AJAX可以所为客户端和服务器的中间层,来处理客户端的请求,并根据需要向服务器端发送请求,
用什么就取什么、用多少就取多少,就不会有数据的冗余和浪费,减少了数据下载总量,
而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于纯后台处理并重载的方式缩短了用户等待时间,
也把对资源的浪费降到最低,基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序,
所以Ajax对于用户和ISP来说是双盈的。
Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),而在以前两者是没有清晰的界限的,
数据与呈现分离的分离,有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、
也更加适用于现在的发布系统。也可以把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理。
四、应用
Ajax理念的出现,揭开了无刷新更新页面时代的序幕,并有代替传统web开发中采用form(表单)递交方式更新web页面的趋势,
可以算是一个里程碑。但Ajax都不是适用于所有地方的,它的适用范围是由它的特性所决定的。
举个应用的例子,是关于级联菜单方面的Ajax应用。
我们以前的对级联菜单的处理是这样的:
为了避免每次对菜单的操作引起的重载页面,不采用每次调用后台的方式,
而是一次性将级联菜单的所有数据全部读取出来并写入数组,然后根据用户的操作用JavaScript来控制它的子集项目的呈现,
这样虽然解决了操作响应速度、不重载页面以及避免向服务器频繁发送请求的问题,
但是如果用户不对菜单进行操作或只对菜单中的一部分进行操作的话,
那读取的数据中的一部分就会成为冗余数据而浪费用户的资源,特别是在菜单结构复杂、数据量大的情况下
(比如菜单有很多级、每一级菜又有上百个项目),这种弊端就更为突出。
如果在此案中应用Ajax后,结果就会有所改观:
在初始化页面时我们只读出它的第一级的所有数据并显示,在用户操作一级菜单其中一项时,
会通过Ajax向后台请求当前一级项目所属的二级子菜单的所有数据,如果再继续请求已经呈现的二级菜单中的一项时,
再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据,以此类推……这样,用什么就取什么、用多少就取多少,
就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,
相对于后台处理并重载的方式缩短了用户等待时间,也把对资源的浪费降到最低。
此外,Ajax由于可以调用外部数据,也可以实现数据聚合的功能(当然要有相应授权),
比如微软刚刚在3月15日发布的在线RSS阅读器BETA版;还可以利于一些开放的数据,开发自已的一些应用程序,
比如用Amazon的数据作的一些新颖的图书搜索应用。
总之,Ajax适用于交互较多,频繁读数据,数据分类良好的WEB应用。
五、Ajax的优势
1、减轻服务器的负担。因为Ajax的根本理念是“按需取数据”,所以最大可能在减少了冗余请求和响影对服务器造成的负担;
2、无刷新更新页面,减少用户实际和心理等待时间;
首先,“按需取数据”的模式减少了数据的实际读取量,打个很形象的比方,
如果说重载的方式是从一个终点回到原点再到另一个终点的话,那么Ajax就是以一个终点为基点到达另一个终点;
其次,即使要读取比较大的数据,也不用像RELOAD一样出现白屏的情况,由于Ajax是用XMLHTTP发送请求得到服务端应答数据,
在不重新载入整个页面的情况下用Javascript操作DOM最终更新页面的,所以在读取数据的过程中,
用户所面对的也不是白屏,而是原来的页面状态(或者可以加一个LOADING的提示框让用户了解数据读取的状态),
只有当接收到全部数据后才更新相应部分的内容,而这种更新也是瞬间的,用户几乎感觉不到。总之用户是很敏感的,
他们能感觉到你对他们的体贴,虽然不太可能立竿见影的效果,但会在用户的心中一点一滴的积累他们对网站的依赖。
3、更好的用户体验;
4、也可以把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,
减轻服务器和带宽的负担,节约空间和带宽租用成本;
5、Ajax由于可以调用外部数据;
6、基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序;
7、Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离);
8、对于用户和ISP来说是双盈的。
六、Ajax的问题
1、一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax;
2、用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事;
3、Ajax的无刷新重载,由于页面的变化没有刷新重载那么明显,
所以容易给用户带来困扰――用户不太清楚现在的数据是新的还是已经更新过的;现有的解决有:
在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等;
4、对流媒体的支持没有FLASH、Java Applet好;
七、结束语
更好的Ajax应用,需要更多的客户端的开发,和对当前的WEB应用理念的思考,而且良好的用户体验,
来源于为处处用户考虑的理念,而不单纯是某种技术。
您可能感兴趣的文章:
使用PHPRPC实现Ajax安全登录
Ajax实现漂亮、安全的登录界面
JQuery中ajax方法访问web服务实例
如何使用ajax开发web应用程序
AJAX请求是否真的不安全?谈一谈Web安全与AJAX的关系
标签:
萍乡
蚌埠
广元
衢州
枣庄
大理
衡水
江苏
巨人网络通讯声明:本文标题《Ajax技术(WEB无刷新提交数据)-》,本文关键词 ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
相关文章
电销机器人到底如何运作的?
很多人对 电销 机器人到底如何运作存在着巨大的好奇心,那么今天,小编就带大家看一下机器人的运作流程! 电销...
10-24
电话机器人的兴起对电销行业来说是“惊喜”还
随着互联网 大数据 的普及,许多 电销 行业如雨后春笋般争先恐后地冒出来。而今电销行业的混乱,让各位涉足电销...
10-24
百应电话机器人有哪些功能?百应电话机器人好
百应 智能 电话机器人 能够协助企业进行呼入接待、 外呼 回访等服务场景,能够经过不断的培训学习,逐步完善成专...
10-24
客服外呼系统都有哪些优势?
当前呼叫中心电话系统被企业用于业务 电销 以及客户服务,然而随着企业需求不断扩大,原来传统的自建 呼叫中心...
10-24
电销机器人效果怎么样?智能电话机器人可行吗
几百数千年后,或许没人会记得卡斯帕罗夫曾是世界第一的围棋高手,但人们会记得,他败给了电脑深蓝。那虽算不...
10-24
百应智能外呼系统,贷后管理科技升级
去年底开始,接连出台政策和法规加强对消费 金融 等金融形态进行 规范 。强 监管 下,行业走向规范发展,行业竞...
10-24
百应智能外呼系统引领外呼行业新风向
电话销售: 您好,我这边是XX地产,给您推荐一下精装酒店式公寓,有兴趣了解一下吗? 客户: 具体位置在哪里啊?...
10-24
小贷企业为什么需要电销机器人?
随着信贷行业逐步进入我们的生活中,越来越多人选择借款来处理资金难题。信贷企业不断涌现,业务开展迅猛,行...
10-24
雷霆电话机器人是如何转接人工的?
当我们在拨通移动、联通或电信 运营商 的客服电话时,总会要先经过一些机械化的选择,然后成功连接人工坐席反馈...
10-24
米卡迪电话机器人效果怎么样?
外呼 电话机器人 ,之所以能智能的与客户无忧交流,因为运用了下面这么多高技术。 ASR 语音识别 米卡迪电话机器人...
10-24
灵声电话机器人效果怎么样?好用吗
外呼 电话机器人 ,之所以能智能的与客户无忧交流,因为运用了下面这么多高技术。 灵声 电话机器人 效果怎么样?...
10-24
电销机器人要想效果好,话术定制有多重要
电话机器人 是基于智能语音技术的智能营销工具。它会像真人一样主动拨打客户的电话,介绍产品并回答客户的咨询...
10-24
智能电话机器人的实现原理,使用安全吗?
随着科学技术的进步和 人工智能 的发展,越来越多的智能产品已经进入我们的工作和生活。智能手机、智能电视、智...
10-24
福州哪里有电话机器人研发公司?
人工智能 再次成为各行各业关注的焦点,自从这个概念首次提出以来,60年已经过去了。自从AlphaGo以巨大优势击败人...
10-24
电销机器人销售能力怎么样?
自从 电话机器人 一出现,在 电销 行业火爆了起来。面对电话机器人的各种优势,企业跃跃欲试,但又害怕效果不理...
10-24
推荐文章
优化产业结构 商务部服务外包研究中心一行来漳调研
Win7/Win8.1用户:全新安装Win10之前请先升级
您的联络中心NLP和NLU指南
习近平叮嘱大庆加快城市转型
呼叫中心手动排版法则
Win10 Mobile预览版10536使用后越来越卡顿
加强商标权保护至关重要
科大讯飞“语音云”发布 移动互联网迈入语音时代
上一篇:
ajax 不错的应用
下一篇:
AJAX应用之注册用户即时检测
一起分享吧
版权所有:巨人网络(扬州)科技有限公司——拥有网站建设十年经验,具备独立网站开发能力,能够提供完善的网站设计及相关的网站制作服务! 全国统一服务热线:400-1100-266
展开
收缩
QQ咨询
在线咨询
客服小董
客服小张
客服小刘
客服小李
客服小王
招商加盟
财务查询
微信客服
电话咨询
400-1100-266