关于Ajax中http协议
关于ajax
ajax是异步的JavaScript和XML,优点是无刷新的与后天通信并获取数据,只更改页面中需要更改的部分,而不是刷新整个页面,减少无意义的数据传输,提高了效率和用户体验
1.协议和HTTP协议。
HTTP协议,它规定了在网络中发布、传输和接收html页面的方法。大家都遵循这个协议,就能实现信息的传输。
2.HTTP协议典型的工作流程。
客户端和服务器端没有任何联系——建立连接,客户端发送请求——沿着建立好的连接,服务器端返回响应信息——断开连接。
3.HTTP请求信息的格式。
请求信息分为三部分:请求行、请求头信息和请求主体信息。请求头信息和请求主体信息之间用一个空行分割,不管是否有请求主体信息,这个空行都必须存在。
请求行又分成三部分:请求方法,请求资源的路径,所用协议的版本(目前一般是http1.1,0.9和1.0已经基本不用了)。
请求方法又有以下几种:GET/POST/PUT/DELETE/TRACE/OPTIONS等。
get方式通过地址栏传递参数,post方式是通过请求头信息传递信息的。但是这两种方式传递数据的格式都是相同的。key=value&key=value
4.HTTP响应信息的格式。
响应信息同样分成三部分:响应行,响应头信息,响应主体信息。
响应行:协议版本,状态码,状态描述信息。
5.常见的http状态码:
200 OK,表示一切正常。对GET和POST请求的应答文档跟在后面。
301 Moved Permanently。永久重定向。客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 Found。临时重定向,新的URL被视为临时性的替代,而不是永久性的。
304 Not Modified。客户端有缓存的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓存的文档还可以继续使用。
400 Bad Request。请求出现语法错误。
403 Forbidden。资源不可用。
404 Not Found。无法找到指定位置的资源。
405 Method Not Allowed。请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。
414 Request URI Too Long。输入的网站URI太长。
500 Internal Server Error。服务器遇到了意料不到的情况,不能完成客户的请求
501 Not Implemented。服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求
505 HTTP Version Not Supported。服务器不支持请求中所指明的HTTP版本。
6.HTTP协议的头信息
Refer信息是一个url,可以知道是从哪个页面跳转到当前页面的,也就是用户来到当前页面的上一页是哪里。通过这个特性结合服务器配置,可以用来防盗链。
7.XMLHttpRequest对象的属性。
(1)responseText。从HTTP协议的角度来看,它代表的是服务器响应的主体信息,body信息。从我们用户的角度看,就是在浏览器的页面上能看到的信息,这个属性的值肯定是字符串类型的。
(2)status是服务器返回的状态码。就是上面提到的http协议的状态码。
(3)statusText,状态码对应的文字描述,也是http协议中的内容。
(4)onreadystatechange,一个事件句柄,用来绑定一个函数。具体来说,它绑定的是当XMLHttpRequest对象的状态发生变化的时候激发的函数。
(5)readyState,这是XMLHttpRequest对象自身的状态码,有以下几种:
0(未初始化)还没有调用send()方法,此阶段确认XMLHttpRequest对象是否创建,值为0表示对象已经存在。
1(载入),此阶段对XMLHttpRequest对象进行初始化,已经调用 send()方法,值为1表示正在向服务端发送请求。
2表示载入完成,(send()方法执行完毕),已经收到全部的响应内容。但是此时收到的并不是我们能直接看懂的内容,所以还不能在客户端调用。
3正在解析响应内容。
4响应内容解析完成。这里要特别注意,完成并不一定代表成功得到了想要得到的内容。
(6).responseXML,对于大量的格式化文档,可以用XML来传输或交换,由后台程序把数据封装在XML文档中,JS接收XML对象并解析其中的内容。
8.XMLHttpRequest对象的方法。
(1).open('请求方式','url',同步/异步),默认为true,表示异步。同步和异步听起来有些高大上,其实可以这样形容,前面的没执行完,后面的就不能执行,这就是同步,它们排着队,前面的会阻塞后面的。而异步就是前面的没做完也不影响后面的执行,等到前面的执行完了把结果动态的拿过来就好了,通过及时“插队”的形式实现了异步。
(2).send(null,参数),参数的格式是键值对&键值对。
比如这样:obj.send('username='+un+'&email='+eml);
(3).getResponseHeader():获取响应的某个头信息,括号中写入到底要获得哪一个头信息,比如('Content-Type')用来获取返回的主体内容的长度。
(4).getAllResponseHeaders():获取响应的所有头信息。
(5).Abort,忽略,不要再进行下去了,到此为止。
(6).setRequestHeader(key,value),这个用来设置请求头信息。
9.get方式提交数据,直接把要发送的内容跟在请求地址的后面即可,同时还要注意两个问题:缓存和中文乱码。浏览器的缓存会导致后端更新的数据不能及时的反馈到前端,所以要在地址最后加上一个时间戳或者是随机数。而解决中文乱码,可以在发送的时候用encodeRUI函数对汉字进行编码,这个函数的作用就是把字符串作为URI进行编码。
10.post方式没有缓存问题,也没有中文乱码问题。它用来提交数据,提交数据是不会产生缓存的。把要提交的数据放到send方法的括号中作为参数传递过去。具体的拼接方式仍然不变,不过一定要注意一点,post提交数据的时候,必须在请求头信息中声明Content-Type,告诉后端你要发送的大致是什么内容,方便服务器进行相应的解析。同时,由于设置了内容类型,也就没有中文乱码问题了。
关于Ajax中http协议的更多相关文章
- ajax中的stasus错误详解
一.英文版解析 0: (Uninitialized) the send( ) method has not yet been invoked. 1: (Loading) the send( ) met ...
- ajax中的json和jsonp详解
出现的问题: 花了点时间研究ajax中的json和jsonp的原理,这里记录一下.以前一直在使用ajax调用数据,但是从来没有遇到跨域问题,也从来没有注意过json和jsonp的区别,总是一通乱用.但 ...
- jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?
1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自 ...
- ajax中的POST和GET传值
ajax中的POST和GET传值 转自:http://www.cnblogs.com/jtome/archive/2008/12/04/1347864.html Ajax中我们经常用到get和post ...
- Ajax与Http协议
目录 Ajax与Http协议详解 Xhr对象 xhr对象发送请求整体感知 xhr对象的常用属性和方法 xhr对象发送post请求 xhr对象的兼容性问题 请求超时timeout与监听超时ontimeo ...
- Ajax中的同源政策
Ajax中的同源政策 Ajax请求限制 Ajax只能向自己的服务器发送请求.比如现在有一个A网站.有一个B网站,A网站中的HTML文件只能向A网站服务器中发送Ajax请求,B网站中的HTML文件只能向 ...
- DNS 中的协议字段详细定义
DNS中的协议字段定义 Table of Contents 1 概述 2 DNS Classes 3 DNS OpCodes 4 DNS RCODEs 5 DNS Label Types 6 DNS资 ...
- 转:AJAX中xhr对象详解
XJAX ,并不是一种新技术的诞生.它实际上代表的是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用. 它包括: 使用XHTML和CSS标准化呈现: 使用DOM实现动态显示和交互: 使用XML ...
- Ajax中的get和post两种请求方式的异同
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别. 1. get是把参数数据队列加到提交表单的A ...
随机推荐
- Jquery plupload上传笔记(修改版)
找一个好的上传插件不容易啊,最近看好一个上传插件,查了些网上质料,自己做了些改动,记录下来,来彰显自己曾经屌丝过,这插件还不错,支持多个上传和预览 首先引用,发现有的时候想学点新的东西,不过时间久了也 ...
- [Android]下拉刷新控件RefreshableView的实现
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4172483.html 需求:自定义一个ViewGroup,实现 ...
- [Android]使用AdapterTypeRender对不同类型的item数据到UI的渲染
以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3992843.html 本文讲的工具均放在AndroidBucket开源 ...
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3360938.html 如新浪微博下面的标签切换功能,我以前也写过一篇博文(http:/ ...
- Android 6.0 运行时权限处理
在运行时请求权限 从Android 6.0(API级别23)开始,用户权限授予应用程序在应用程序运行时,当他们安装程序.这种方法简化了应用程序的安装过程,因为用户不需要安装或更新应用程序时授予权限.这 ...
- iOS中响应者链条-触摸事件
总体来说,分2个步骤: 一,从上到下寻找合适的控件来处理这个触摸事件.如下图,如果点击了黄色4,则UIApplication -> UIWindow -> 1白色 -> 2橙色 -& ...
- 统计整个Xcode工程代码行数
打开终端,ls 查看目录,用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" ...
- MySQL 数据库双向镜像、循环镜像(复制)
在MySQL数据库镜像的贴子中,主数据库A 的数据镜像到从数据库B,是单向的,Zen Cart网店的数据读写都必须在数据库A进行,结果会自动镜像到数据库B中.但是对数据库B的直接操作,不会影响数据库A ...
- 15、安全工程师要阅读的书籍 - IT软件人员书籍系列文章
信息安全工程师是一个比较新兴的角色.在2016年今年的下半年软考就将安全工程师纳入了考试科目,说明国家对安全工程师的需求还是不错的.安全工程师包括硬件和软件两块内容吧.这里描述的安全工程师主要是针对软 ...
- png-8 和 png-24的区别
png是一种图片格式,是Portable Networks Graphics的缩写,做ping. png8和png24的区别如下. 1 "PNG8"是指8位索引色位图," ...