iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >Ajax怎么实现WEB无刷新提交数据
  • 259
分享到

Ajax怎么实现WEB无刷新提交数据

2024-04-02 19:04:59 259人浏览 安东尼
摘要

这篇文章主要介绍“ajax怎么实现WEB无刷新提交数据”,在日常操作中,相信很多人在Ajax怎么实现WEB无刷新提交数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax

这篇文章主要介绍“ajax怎么实现WEB无刷新提交数据”,在日常操作中,相信很多人在Ajax怎么实现WEB无刷新提交数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax怎么实现WEB无刷新提交数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Ajax内部交流文档一、使用Ajax的主要原因 
  1、通过适当的Ajax应用达到更好的用户体验; 
  2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。    

二、引用 
Ajax这个概念的最早提出者Jesse James Garrett认为: 
  Ajax是Asynchronous javascript and XML的缩写。 
  Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括 
  使用XhtmlCSS标准化呈现; 
  使用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=data1&var2=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)具有一种开放的、可扩展的、可自描述的语言结构, 
它已经成为网上数据和文档传输的标准。它是用来描述数据结构的一种语言,就正如他的名字一样。 
他使对某些结构化数据的定义更加容易,并且可以通过他和其他应用程序交换数据。 

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应用理念的思考,而且良好的用户体验, 
来源于为处处用户考虑的理念,而不单纯是某种技术。 

到此,关于“Ajax怎么实现WEB无刷新提交数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Ajax怎么实现WEB无刷新提交数据

本文链接: https://www.lsjlt.com/news/70882.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Ajax怎么实现WEB无刷新提交数据
    这篇文章主要介绍“Ajax怎么实现WEB无刷新提交数据”,在日常操作中,相信很多人在Ajax怎么实现WEB无刷新提交数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax...
    99+
    2024-04-02
  • Ajax技术怎么实现WEB无刷新提交数据功能
    这篇文章主要介绍“Ajax技术怎么实现WEB无刷新提交数据功能”,在日常操作中,相信很多人在Ajax技术怎么实现WEB无刷新提交数据功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • Ajax如何无刷新Url提交页面
    这篇文章将为大家详细讲解有关Ajax如何无刷新Url提交页面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Jquery,porotype,Ext等框架流行之后,大量简化...
    99+
    2024-04-02
  • ajax如何实现无刷新提交表单、上传文件
    这篇文章主要介绍ajax如何实现无刷新提交表单、上传文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、HTML代码 <!DOCTYPE html PUBLIC &...
    99+
    2024-04-02
  • 如何使用AJAX实现无刷新数据分页
    这篇文章将为大家详细讲解有关如何使用AJAX实现无刷新数据分页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、实现过程注意:一下的内容都是在服务器内使用的。首先要在服务器的路径下建立几个文件,比如,pa...
    99+
    2023-06-08
  • AJAX怎么实现无刷新搜索功能
    这篇文章主要介绍“AJAX怎么实现无刷新搜索功能”,在日常操作中,相信很多人在AJAX怎么实现无刷新搜索功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”AJAX怎么实现无刷...
    99+
    2024-04-02
  • AJAX怎么实现无刷新登录功能
    这篇文章主要为大家展示了“AJAX怎么实现无刷新登录功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“AJAX怎么实现无刷新登录功能”这篇文章吧。最近学习了如何...
    99+
    2024-04-02
  • ajax中怎么实现无刷新分页功能
    本篇文章给大家分享的是有关ajax中怎么实现无刷新分页功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html页<html> &...
    99+
    2024-04-02
  • Ajax中怎么实现页面无刷新功能
    Ajax中怎么实现页面无刷新功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ajax (ajax开发)AJAX即“Asynchronous ...
    99+
    2024-04-02
  • pushState怎么实现Ajax无刷新页面切换
    要实现Ajax无刷新页面切换,可以使用pushState方法来改变浏览器的URL,并通过Ajax加载新的内容。以下是一个简单的示例:...
    99+
    2023-08-15
    pushState Ajax
  • 如何实现Jquery基于Ajax方法自定义无刷新提交表单Form
    本篇内容主要讲解“如何实现Jquery基于Ajax方法自定义无刷新提交表单Form”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现Jquery基于Ajax...
    99+
    2024-04-02
  • ajax如何实现无刷新分页
    这篇文章主要介绍ajax如何实现无刷新分页,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:在普通的分页中,一旦页码改变,则url改变,整个页面都会刷新,如果我们希望页码的改变...
    99+
    2024-04-02
  • Ajax如何实现无刷新登录
    这篇文章主要为大家展示了“Ajax如何实现无刷新登录”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax如何实现无刷新登录”这篇文章吧。先建一个Login.h...
    99+
    2024-04-02
  • 使用AJAX怎么实现无刷新分页功能
    使用AJAX怎么实现无刷新分页功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  首先讲一下原理:分页有两个要点:1.有多少页,2.每页有多...
    99+
    2024-04-02
  • php中怎么利用ajax实现无刷新分页
    本篇文章为大家展示了php中怎么利用ajax实现无刷新分页,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<php Header("Cont...
    99+
    2024-04-02
  • AJAX怎么实现博客无刷新搜索功能
    这篇文章主要讲解了“AJAX怎么实现博客无刷新搜索功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“AJAX怎么实现博客无刷新搜索功能”吧!搜索结果模板sa...
    99+
    2024-04-02
  • 怎么用ASP+Ajax实现无刷新评论功能
    本篇内容介绍了“怎么用ASP+Ajax实现无刷新评论功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&l...
    99+
    2024-04-02
  • django如何实现ajax提交评论并自动刷新功能
    这篇文章将为大家详细讲解有关django如何实现ajax提交评论并自动刷新功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。js代码:<script> &nb...
    99+
    2024-04-02
  • web开发中如何实现无刷新的Ajax分页技术
    这篇文章主要介绍web开发中如何实现无刷新的Ajax分页技术,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码如下:<!DOCTYPE html PUBLI...
    99+
    2024-04-02
  • 使用Ajax怎么实现一个无刷新分页
    本篇文章为大家展示了使用Ajax怎么实现一个无刷新分页,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<!doctype html><html lang=&quo...
    99+
    2023-06-08
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作