Ajax是一种异步的前后端数据交互的技术,它可以在不刷新浏览器的情况下,向服务器端发送http请求和少量数据,服务器端接收数据,对数据进行一系列的操作,查询数据库验证或者直接处理数据等,将处理结果返回给客户端。
理解网络世界的数据交换
一开始学习Ajax的人,一听到上面那么多陌生的概念性的名词,马上就迷糊了,其实Ajax一点也不难,实现起来非常简单,但是需要一点贯通前后端的知识,毕竟Ajax是前端后的交互技术。啥都别说,先看图,了解一下网络世界是如何交换信息的。
client 的中文意思是客户端,指的一般是我们的浏览器,而server 的中文意思是服务器,指的是放置网站的服务器。我们平时上网打开浏览器浏览网页其实就是这么一个过程:
- 打开浏览器,在地址栏里输入一个url地址
背后机理:url地址其实就是向服务器发送一个请求,比如 "http://www.baidu.com" ,就是向baidu.com域名下的www主机发送一个请求。| 域名和主机名的区别与联系
抛出疑问:什么是请求?请求包括哪些内容?
- 如果你有网络,并且你的网址没有输错的话,你可以得到一张百度首页的网页
背后机理:在远方[不知道有多远]的服务器一般是能够接收到你的请求的,接收到请求之后,它会处理你这个请求,并且给你响应,返回你所请求的数据或文件。
比如你输入百度的网址,那么这个网址就被嵌入到请求的内容去了,服务器接收到你请求的内容后,对内容进行判断,确定返回的数据或文件,这就是请求处理,返回一个百度首页的网页,这就是响应并返回数据。
抛出疑问:什么是响应?响应包括哪些内容?
总结
实际上,上面两点很浅层地阐述了网络世界的信息交换,我们在浏览器打开的一张张网页都是通过这样的方式得到的。客户端发送请求,服务器接收到请求,作出响应并返回数据或文件。
理解HTTP协议
HTTP协议是指超文本传输协议,用于从www服务器传输到本地浏览器的传输方式,它规定了客户端http请求和服务器端响应的方式和交互规范。
HTTP协议有以下特征:
- HTTP是一种无状态的协议,所谓无状态就是不建立持久的连接,一开始的时候,客户端和服务器的连接是关闭状态,当客户端发送一个请求给服务器的时候,服务器和客户端的连接被开发,响应客户端后,连接又被关闭了,等待客户端下一次发送请求时再打开。
- HTTP是一种无记忆的协议,它根本不知道是哪个客户端与服务器连接了,当客户端跟服务器连接后,同一个客户端再次连接,是没有记忆的。当然解决这个问题可以使用cookie。
HTTP请求
一个完整的HTTP请求过程包含以下七个步骤:
- 浏览器打开TCP连接,构建Internet,这样才能够访问web互联网上的资源,通俗地
- 客户端发送http请求命令,如GET/sample/hello.jsp HTTP/1.1
- 客户端发送http请求头信息
- 服务器返回http响应,如状态码
- 服务器返回http响应头信息
- 服务器返回收响应数据
- 服务器关闭TCP连接
http请求
一个http请求一般包括以下几个部分
- 请求方式
请求方式有两个,GET和POST - 请求头
请求头包括一些客户端信息,请求内容类型等等 - 请求体
请求体放置请求发送到服务器的一些数据
GET请求和POST请求
1.GET请求使用url传输数据,向服务器发送的数据直接显示在url上,不安全,所以GET请求一般用来查询信息,请求资源,而且GET发送的数据大小也有限制,主要是因为浏览器对url长度有所限制
2.POST请求能够模拟表单向服务器发送数据,其发送的数据不会直接显示在url上,所以用来发送一些个人账号密码的数据,修改数据库信息,是十分的安全,对于POST请求发送的数据大小,没有限制。
http响应
一个http响应一般包括以下几个部分
-
http响应状态码
如200 ok ,就表示服务器已经成功接收请求
还有一个我们常常都会看到的状态码,就是404,表示所请求的资源不存在
- http响应头
响应头包括一些服务器的信息,返回内容的信息 - http响应体
响应体放置服务器返回给客户端的数据。
查看http请求
那么如何在浏览器查看http请求呢?
其实也挺简单的,以chrome为例。
- 打开新标签页,然后按F12调出开发者工具,工具面板切换到network
- 在地址栏输入http://www.baidu.com ,一个回车,然后就浏览器就会把请求的文件下载到本地
3.随便点击一个Name,就能看到关于这个文件的请求头信息和响应头信息
总结
以上就是HTTP协议的基本知识,可以了解到HTTP请求的完整过程,http请求和http响应是怎么样的,由哪些部分组成,GET请求方式和POST请求方式的区别,如何查看这些请求和响应信息等,为我们使用学习AJax作了一个稳固的铺垫
——2015年2月24日23时40分