继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

HTTP与Ajax 初体验

BluyeaSun
关注TA
已关注
手记 24
粉丝 77
获赞 3400

重识HTTP


HTTP请求过程

1.建立TCP连接
2.web浏览器向服务器发送请求命令
3.web浏览器发送请求头信息
4.web浏览器发送请求体
5.web服务器应答
6.web服务器发送应答头信息
7.web服务器向浏览器发送数据
8.web服务器关闭TCP连接

HTTP请求

一个HTTP请求一般有四部分组成
    1.请求的方法或动作,比如是GET还是POST请求
    2.正在请求的URL
    3.请求头,包含一些客户端环境信息,身份验证信息
    4.请求体即请求的正文,包含客户提交的字符串信息,表单信息等

图片描述


HTTP响应

一个HTTP响应一般有三部分组成
    1.一个数字或文字组成的状态码
    2.响应头,包含服务器的环境信息例如服务器类型,日期时间,内容类型和长度等
    3.响应体

图片描述


补充:状态码

HTTP状态码由三位数字构成,其中首位数字定义了状态码的类型

1xx:信息类,表示收到web浏览器的请求,正在进一步处理中
2xx:成功,表示请求被正确接收,理解和处理:200 OK
3xx:重定向,表示请求没有成功,客户必须采取进一步的动作
4xx:客户端错误,表示客户端提交的请求有错误,例如404 NOT Found
5xx:服务器错误,表示服务器不能完成对请求的处理。

Ajax初体验

ajax简介

拙见:Ajax技术就好像把网页分割成若干个小部分,每个小部分都可以独自的通过JavaScript与服务器进行联系,刷新各自的数据。而不像原来没有ajax时只是想要网页中的刷新一部分,但不得不刷新整个网页浪费了资源。


异步就是每个小部分都在干自己的事。
同步就是大家捆绑在一起,你干什么我也必须干什么,你刷新我也必须刷新。


大牛:
异步的JavaScript和XML(Asynchronous JavaScript and XML)
使用ajax技术的网页,可以局部异步的更新数据。

实现Ajax

拙见:所说的每个小部分便是XMLHttpRequest对象

运用XMLHttpRequest和web服务器进行数据的异步交换

运用JavaScript操作DOM,实现动态局部刷新

创建XMLHttpRequest对象

XMLHttpRequest对象也称XHR

js:
var request
if(window.XMLHttpRequest){
    request = new XMLHttpRequest();
    //IE7+,Firefox,Chrome,Opera,Safari
}else{
    request = new ActiveXObject("Microsoft.XMLHTTP")
    //IE6,IE5
}

发送XHR对象

设置初始信息
    open(method,url,async)

        method :  请求的方式是GET还是POST
        url    :  请求的地址
        async  :  是否采用异步传输

发送数据HTTP请求
    send(string)
        string : POST请求时向服务器发送的数据,GET请求时为空
注意
    在发送POST请求时,要设置请求的头信息

实例

    GET请求

        request.open("GET","oneurl.php?fname=Bill&lname=Gates",true)

        request.send()

    POST请求      

        request.open("POST","oneurl.php",true)
        //设置HTTP请求头信息时,第一个字符串参数为名称,
                                第二个字符串参数为值
        request.setRequestHeader("Content-type",
                    "application/x-www-form-urlencoded")
        request.send("name=二狗&sex=男")

监听XHR发送情况

数据的发送过程是不可以看到的,但是可以通过
    XHR对象的readyState属性和onreadystatechange事件
    来实时监听数据的发送情况。

readyState  属性

    0:  请求尚未初始化,open还没有调用
    1:  服务器连接已经建立,send方法已经调用,正在发送请求
    2:  send方法已经完成,且受到全部的响应内容
    3:  正在解析从服务端的返回数据
    4:  解析数据完成,可以再客户端调用该数据

onreadystatechange  事件

    每次状态码的改变都会触发该事件

取得响应数据

当readyState==4时即客户端解析数据完毕,
    这时调用response的各种属性和方法可以方便查看各种数据

responseText              :       获得字符串形式的响应数据
reponseXML                :       获得XML形式的响应数据
status和statusText        :       以数字和文本的形式返回HTTP状态码
getResponseHeader('name') :       查询响应中的某一个字段的值

jQuery实现Ajax

参考: jQuery之多样请求

案例分析

AJAX全接触

推荐 phpStudy集成环境

打开App,阅读手记
60人推荐
发表评论
随时随地看视频慕课网APP

热门评论

个人拙见:同步异步更多的是指发送请求时,同步是说必须捆绑式操作,一个请求成功再进行下一个请求,而异步是彼此间不制约,可以分别独立发送请求,不必等待其他请求都完成。如果不对,欢迎指正。

不错的

简单易懂

查看全部评论