关于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协议的更多相关文章

  1. ajax中的stasus错误详解

    一.英文版解析 0: (Uninitialized) the send( ) method has not yet been invoked. 1: (Loading) the send( ) met ...

  2. ajax中的json和jsonp详解

    出现的问题: 花了点时间研究ajax中的json和jsonp的原理,这里记录一下.以前一直在使用ajax调用数据,但是从来没有遇到跨域问题,也从来没有注意过json和jsonp的区别,总是一通乱用.但 ...

  3. jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?

    1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自 ...

  4. ajax中的POST和GET传值

    ajax中的POST和GET传值 转自:http://www.cnblogs.com/jtome/archive/2008/12/04/1347864.html Ajax中我们经常用到get和post ...

  5. Ajax与Http协议

    目录 Ajax与Http协议详解 Xhr对象 xhr对象发送请求整体感知 xhr对象的常用属性和方法 xhr对象发送post请求 xhr对象的兼容性问题 请求超时timeout与监听超时ontimeo ...

  6. Ajax中的同源政策

    Ajax中的同源政策 Ajax请求限制 Ajax只能向自己的服务器发送请求.比如现在有一个A网站.有一个B网站,A网站中的HTML文件只能向A网站服务器中发送Ajax请求,B网站中的HTML文件只能向 ...

  7. DNS 中的协议字段详细定义

    DNS中的协议字段定义 Table of Contents 1 概述 2 DNS Classes 3 DNS OpCodes 4 DNS RCODEs 5 DNS Label Types 6 DNS资 ...

  8. 转:AJAX中xhr对象详解

    XJAX ,并不是一种新技术的诞生.它实际上代表的是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用. 它包括: 使用XHTML和CSS标准化呈现: 使用DOM实现动态显示和交互: 使用XML ...

  9. Ajax中的get和post两种请求方式的异同

    Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.   1. get是把参数数据队列加到提交表单的A ...

随机推荐

  1. 导致VC不能释放的几个原因

    delegate的属性不是weak NSTimer没有invalidate block中的强引用 调用了performSelector,退出时没有cancelPerformSelectorsWithT ...

  2. android编译系统的makefile文件Android.mk写法

    Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下Android.mk和需要编译的源文件在同一目录下,宏函数“my-dir”右编译系统提供的,用于返回当前路径 ...

  3. Android时区及语言代码

    1. 设置默认时区   PRODUCT_PROPERTY_OVERRIDES += \         persist.sys.timezone=Asia/Shanghai\ 注:搜索“persist ...

  4. Android 图片的颜色处理

    仿造美图秀秀移动鼠标调整seekbar,调整图片的颜色 项目布局如下: <LinearLayout xmlns:android="http://schemas.android.com/ ...

  5. iOS 关于手势

    不同视图不能同时添加相同手势!

  6. 【代码笔记】iOS-判断textField里面是否有空

    一,效果图. 二,工程图. 三,代码. ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional ...

  7. android Gui系统之WMS(2)----窗口的添加

    Android系统很多,但是最常用的就两类,一类是有系统进场管理的,系统窗口.还有一类就是由应用程序产生的,应用窗口. 1.系统窗口的添加流程 1.1 addStatusBarWindow Phone ...

  8. php示例代码之读取文件

    php读取文件 1 2 3 4 5 6 7 8 $sourceString=''; $fp = @fopen($filename, "r");     while($line =  ...

  9. LoadRunner性能测试巧匠训练营

    <LoadRunner性能测试巧匠训练营>基本信息作者: 赵强 邹伟伟 任健勇 丛书名: 实战出版社:机械工业出版社ISBN:9787111487005上架时间:2015-1-7出版日期: ...

  10. 最近用Timer踩了一个坑,分享一下避免别人继续踩

    最近做一个小项目,项目中有一个定时服务,需要向对方定时发送数据,时间间隔是1.5s,然后就想到了用C#的Timer类,我们知道Timer 确实非常好用,因为里面有非常人性化的start和stop功能, ...