`
快乐_虫
  • 浏览: 7531 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Ajax技术---原理与知识点

阅读更多
Ajax(Asynchronous JavaScript + XML 的简写)能够向服务器请求额外的数据而无须卸载页面,可以带来更好的用户体验。
Ajax技术的核心是XMLHttpRequest对象(简称XHR),XHR能够以异步方式从服务器取得更多信息,意味着用户单击后,可以不必刷新页面也能取得新数据。也就是说,可以使用XHR对象取得新数据,然后再通过DOM将新数据插入到页面中。
 
使用Ajax的方法与步骤
我们要用XHR对象向服务器请求数据,首先,我们得创建一个XHR对象,如下:
var xhr = new XMLHttpRequest();    //  标准浏览器 创建方式
var xhr = new ActiveXObject('Microsoft.XMLHTTP');    //  IE6 创建方式
 
创建了XHR对象之后,要调用的第一个方法就是open()
ex:xhr.open('get', 'async.php', true);
open()方法的3个参数
第1个参数:要发送的请求的类型(“get”,“post”
第2个参数:请求的URL
第3个参数:表示是否异步发送请求的布尔值,true表示异步,false表示同步
open()方法会启动一个针对第二个参数(URL)的(get 或者 post)请求,但并不会真正发送请求,而只是启动一个请求以备发送。注意:URL和执行代码的当前页面(当然也可以是绝对路径)必须在同一个域中,并且使用相同端口和协议,否则会引发安全错误。
 
请求类型(第1个参数)详解:
get请求
1:可传送简单数据,需要将参数字符串追加到URL的末尾,以便将信息发送给服务器。
2:它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重的安全性问题。
3:另外get传送的数据量较小,不能大于2KB,但处理效率高,通常是post方式的2倍
4:使用get请求经常会发生一个错误,就是参数字符串的格式有问题。字符串中每个参数的名称和值都必须使用encodeURIComponent()进行编码,然后再能放到URL的末尾(URL的末尾还要用?连接参数字符串),并且所有键-值对儿都必须由”&“分隔ex:example.php?name1=value1&name2=value2
 
post请求
1:当使用POST方式时,浏览器把各表单字段元素及其数据作为HTTP消息的实体内容发送给Web服务器,而不是作为URL地址的参数进行传递,所以相对get请求方式是安全的。
2:使用POST方式传递的数据量要比使用GET方式传送的数据量大的多,可以达到2M
3:使用post请求,需要在send()方法之前,设置Context-Type的头信息,如下:
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
4:参数字符串格式也是名/值一一对应的键值对,每对值用&号隔开.如 "name=abc&sex=man&age=18"
5:参数在Send(参数)方法中发送,例: xml.send("name=abc&sex=man&age=18")
 
get与post的差别小结:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。 
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节. 
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
4.get 方法用Request.QueryString["strName"]接收,post 方法用Request.Form["strName"] 接收
5.一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题
 
要发送上面的请求,必须调用send()方法,
ex:xhr.send(null);
send()方法接收一个参数,即要作为请求主体发送的数据。如果不需要通过请求主体发送数据(比如get方式),则必须传入null,因为这个参数对有些浏览器来说是必需的。调用send()方法之后,请求就会被分派到服务器。
服务器后台页面接收到请求后,会处理发送过去数据,然后再把处理结果发送回客户端。服务器端的过程不用XHR对象(或说Ajax技术)考虑,只是为了完善数据来回的过程,所以才在这里提到。
 
判断readyState属性值与status属性值、处理响应结果
处理响应结果之前,我们先了解一下XHR对象的readyState属性,如下:
readyState属性表示请求/响应过程的当前活动阶段。
0:未初始化。尚未调用open()方法。
1:启动。已经调用open()方法,但尚未调用send()方法。
2:发送。已经调用send()方法,但尚未接收到响应。
3:接收。已经接收到部分响应数据。
4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了。我们只关注这个阶段就够了。
只要readyState属性的值由一个值变成另一个值,就会触发一次readystatechange事件,可以利用这个事件来检测每次状态变化后readyState的值。通常,我们只对readtState的值为4的阶段感兴趣。需要注意的是,我们必须在调用open()方法之前制定onreadystatechange事件处理程序才能确保跨浏览器兼容性。
 
在收到响应后,响应的数据会自动保存在XHR对象的属性中相关属性如下:
responseText:响应主体,被返回的文本。
responseXML:如果响应的内容类型是"text/xml"或"application/xml",这个属性中将保存包含着响应数据的XML DOM文档。
status:响应的HTTP状态。
statusText:HTTP状态说明。
 
思路:数据已经从接收到了服务器发回的全部数据,并且接收到正常状态的数据的时候,我们处理服务器返回的数据,这个思路的代码如下:
xhr.onreadystatechange = function () {
            if(xhr.readyState == 4){     //  接收到服务器发回的全部数据
                if(xhr.status == 200 || xhr.status == 304){   //  返回数据正确 200代表成功,304代表页面没有改变,从缓存中读取数据,都表示数据正确
                    //  处理 xhr.responseText,在这里写代码就行了
                }
        }
  }
 
常用status(响应的HTTP状态)------说明:
1字头---信息报告码:服务器收到请求,需要请求者继续执行操作
2字头---成功:操作被成功接收并处理
200  OK    请求已成功,请求所希望的响应头或数据体将随此响应返回。
3字头---重定向:需要进一步的操作以完成请求
301  Moved Choices   永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
304   Not Modified   未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
4字头---请求错误:请求包含语法错误或无法完成请求
400 Bad Request   客户端请求的语法错误,服务器无法理解。
403 Forbidden   资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 Not Found   无法找到指定位置的资源。这也是一个常用的应答。
5字头---服务器错误:服务器在处理请求的过程中发生了错误
500  Internal Server Error  服务器内部错误,无法完成请求。
502 Bad Gateway    充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable   由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

 

分享到:
评论

相关推荐

    AJAX ---.NET

    UpdatePanel内部的工作原理就是使用AJAX技术。 3. **ScriptManager**:负责管理页面上的AJAX功能,包括加载必要的脚本文件和设置AJAX选项。 4. **WebServices和PageMethods**:这些是服务器端的方法,可以被AJAX调...

    ajax--测试

    通过以上知识点,我们可以理解Ajax的基本原理和使用方式。在“ajax--测试”项目中,可能包含了使用Ajax进行数据交互的示例代码,通过实践这些代码,可以加深对Ajax的理解,并能应用于实际项目中。

    韩顺平Ajax技术-WEB版QQ多人聊天,带离线留言功能webqq.zip

    【知识点详解】 1. **Ajax基础**:理解Ajax的工作原理,包括XMLHttpRequest对象、异步请求、数据交互格式(如JSON、XML)等。 2. **JavaScript编程**:作为Ajax的核心,需要掌握基本的JavaScript语法,DOM操作,...

    AJAX_专题--体验AJAX_知识点剖析_实例贯串各知识点实现AJAX

    **AJAX**(异步JavaScript和XML)是一种前端开发技术,它改变了网页与服务器之间的通信方式,提高了...同时,AJAX与现代Web框架(如React、Vue、Angular等)的结合,使得AJAX技术在现代Web开发中扮演着至关重要的角色。

    HDI-AJAX-UpdatePanelWithJavascript-CS

    【标题】"HDI-AJAX-UpdatePanelWithJavascript-CS" 涉及的主要知识点是ASP.NET中的Ajax技术,特别是UpdatePanel与JavaScript的交互。在ASP.NET中,Ajax技术允许我们在不刷新整个页面的情况下更新部分网页内容,提高...

    疯狂ajax讲义 --第二版--下载地址-华为网盘

    《疯狂Ajax讲义》第二版是一本专注于Web开发中Ajax技术的权威教程,旨在深入浅出地解析Ajax的核心原理和实际应用。Ajax,全称Asynchronous JavaScript and XML(异步JavaScript与XML),是构建现代Web应用程序的关键...

    WXHHDI01-AJAX-B1-GetStarted-CS

    接下来我们将深入探讨AJAX的核心知识点: 1. **XMLHttpRequest对象**:这是AJAX的核心,它允许JavaScript创建异步HTTP请求。通过实例化XMLHttpRequest对象,可以发送GET或POST请求到服务器,并接收返回的数据。 2....

    疯狂ajax讲义-17章-全

    《疯狂Ajax讲义》是关于Web开发领域中Ajax技术的一部深入详解的教材,第17章涵盖了Ajax技术的关键知识点和实践应用。Ajax,全称为"Asynchronous JavaScript and XML",是一种在无需刷新整个网页的情况下,能够更新...

    Ajax安全技术

    通读《AJAX安全技术》你将看到很多用于阐述关键知识点的真实Ajax安全漏洞案例。在书中还讲到保护Ajax应用的特殊方法,包括每种主要Web编程语言(.NET、Java和PHP)及流行新语言RubyonRails。 《AJAX安全技术》一书对...

    购物车-Ajax实现实例

    在这个实例中,我们主要关注的是如何利用Ajax技术实现页面无刷新更新,以及与服务器端JSP进行交互。下面将详细介绍其中涉及的关键知识点。 1. **Ajax(异步JavaScript和XML)**:Ajax并非一种单一的技术,而是一种...

    ajax-demo-all.zip

    在Ajax的核心概念中,有以下几个关键知识点: 1. **异步通信**:Ajax的最大特点就是异步,这意味着用户可以在等待服务器响应的同时继续浏览网页的其他部分,提高了用户体验。 2. **JavaScript**:Ajax主要依赖...

    ajax的基本知识

    通过对上述知识点的深入理解,开发者可以更好地掌握AJAX的原理和实践,构建出更加高效、响应式的Web应用。在未来,随着Web技术的不断进步,AJAX及其相关技术将继续发挥重要作用,推动Web应用向更高级别发展。

    Ajax 基础知识点汇总(代码+知识点+xmind思维导图)

    Ajax,全称Asynchronous JavaScript and XML,是一种在无需重新加载整个网页的情况下,能够更新部分...通过这个资源,无论是初学者还是有经验的开发者,都能更好地理解和掌握Ajax的核心原理及其在实际项目中的应用。

    ajax组件-ASPAJAXCTP.msi-ASPAJAXExtSetup.msi

    **主要知识点** 1. **Ajax原理**:理解Ajax的工作机制,包括XMLHttpRequest对象、JavaScript异步调用、DOM操作等。 2. **ASP.NET AJAX框架**:了解其服务器端和客户端组件,如ScriptManager、UpdatePanel、...

    深入浅出Ajax(Head Rush Ajax) 源码 书中代码

    根据描述,这本书分为七章,每章可能涵盖以下关键知识点: 1. **第一章:初识Ajax** - Ajax的历史和概念 - Ajax工作原理的简要介绍 - 浏览器与服务器间通信的基础知识 2. **第二章:创建第一个Ajax请求** - ...

    《Ajax安全技术》PDF

    通读《AJAX安全技术》你将看到很多用于阐述关键知识点的真实Ajax安全漏洞案例。在书中还讲到保护Ajax应用的特殊方法,包括每种主要Web编程语言(.NET、Java和PHP)及流行新语言Ruby on Rails。 《AJAX安全技术》一书...

    ajax-tab(动态加载tab) 切换

    下面将详细探讨Ajax-tab的工作原理、实现方式以及相关知识点。 一、Ajax-tab工作原理 1. 用户交互:当用户点击某个tab时,触发一个JavaScript事件。 2. Ajax请求:这个事件会触发一个Ajax请求,向服务器发送数据,...

    开发基于Struts Spring Hibernate Ajax的网上信息发布平台(Struts Hibernate Spring Ajax)---chapter2

    在Chapter2的学习过程中,你将接触到以下具体知识点: 1. **Struts2框架配置**:包括struts.xml配置文件的编写,Action类的创建,以及结果类型和拦截器的使用。 2. **Hibernate配置与实体管理**:如何配置hibernate...

    Ajax-Basics-2.pdf

    这些知识点涵盖了Ajax的基本原理、数据发送方式、Ajax工具包及库的应用以及资源推荐,旨在帮助读者理解并掌握Ajax技术在现代Web开发中的应用。 ### Ajax:基本概念 Ajax(Asynchronous JavaScript and XML)是一种...

Global site tag (gtag.js) - Google Analytics