ajax相关

1、HTTP 协议
1.1、作用
        规范了数据是如何打包的 以及 数据时如何传递的
1.2、Message 消息 / 报文
        Message 指的是在HTTP客户端与服务器间传递的数据块
        分类:
            1、Request Message : 客户端向服务器发送的请求消息
            2、Response Message : 服务器端根据客户端的请求消息,返回给客户端的响应消息
 1.3、请求消息(Request Message)
        1、请求起始行
            1、请求方法
                1、GET 
                    表示客户端向获取服务器上的资源(img/js/..)
                    特点:
                        1、无请求主体
                        2、依靠地址栏传递数据给服务器
                2、POST
                    表示客户端想传递数据给服务器
                    特点:
                        1、有请求主体
                3、PUT
                    表示客户端想把文件放到服务器上(禁用)
                    特点:
                        1、有请求主体
                4、DELETE
                    表示客户端想删除服务器上指定的文件(禁用)
                5、HEAD
                    表示只想获取指定的响应头
                6、CONNECT
                    测试连接
                7、TRACE
                    追踪请示路径
                8、OPTIONS
                    选项,保留以后使用... ...
            2、请求URL
            3、协议 和 版本号
                HTTP / 1.1
        2、请求头
            1、Host:localhost 
                告诉服务器请求哪一个虚拟主机
            2、Connection:keep-alive
                告诉服务器做持久连接
            3、User-Agent
                告诉服务器,客户端浏览器的类型
            4、Cache-Control:max-age=0
                告诉服务器缓存信息,max-age,即不缓存
            5、Accept-Language : zh-CN
                告诉服务器自己能接收的自然语言
            6、Accept-Encoding:gzip
                告诉服务器自己可以接收的压缩类型
            7、Referer: url
                告诉服务器请求来自于哪个页面
        3、请求主体
            Form Data :  是真正的请求主体
        注意:查询字符串
            Query String : 不算作请求主体的,是属于 URL 中的一个部分

1.4、响应消息(Response Message)
        1、响应起始行
            1、协议版本号
                HTTP / 1.1
            2、响应状态码
                1、1XX
                    提示信息
                2、2XX
                    200 :服务器端成功响应所有的信息 OK
                3、3XX
                    需要客户端进行重定向
                    301 :永久性重定向
                    302 :临时重定向
                    304 :Not Modified
                4、4XX
                    客户端请求错误
                    404 :Not Found,请求资源不存在
                    403 :Forbidden,没有访问权限
                    405 :Method Not Allowed,请求方法不被允许
                5、5XX
                    服务器运行错误
                    500 :服务器内部错误
                    501 :没有实现
            3、原因短句
                对状态码的简单解释
                200 : OK
                404 : Not Found
                ... ...
        2、响应消息头
            1、Content-Type
                响应的主体类型,告诉浏览器,响应的数据时什么格式以及什么类型的
                取值:
                    1、text/plain
                        纯文本,告诉浏览器按纯文本的方式解析
                    2、text/html
                        文本与网页,告诉浏览器按html的格式解析内容
                    3、text/css
                        样式,告诉浏览器按 css 的方式解析
                    4、application/javascript
                        JS代码片段,按JS的方式运行数据
                    5、application/xml
                        按 xml 的方式解析
                    6、application/json
                        按 json 的方式解析
        3、响应主体
            由服务器端响应回来的数据
2、缓存
2.1、缓存的工作原理
        客户端可以自动保存已访问过得文档的副本,这些副本就是所谓的缓存

        当客户端再向同一URL发送请求时,那么就直接从缓存中将文件取出来,而不用再重新发送请求
2.2、优点
        1、减少了冗余的数据传输,节省流量
        2、缓解服务器带宽瓶颈的问题,服务器可以节省更多的带宽
        3、降低了对服务器的资源消耗和运行要求
        4、降低了由于远距离而造成的加载延迟
2.3、与缓存相关的消息头
        1、Cache-Control
            作用:从服务器将文档传来之时起,认为新鲜的秒数
            取值:秒数 60 / 3600 / ... ...
            如果取值为 0 / no-cache,表示每次都要重新刷新网页
        2、Expires
            明确指定缓存的过期时间,取值是格林尼治标准时间(GMT)
            Expires:Fri,25 Aug 2017,08:00:00 GMT
            Expires:0 表示不需要缓存
2.4、如何在网页中设置消息头
        在 meta 标记中完成消息头的设定:
            1、http-equiv :指定消息头的名称
            2、content :指定消息头对应的内容
        练习:
            设置网页的消息头Cache-Control,其值为 no-cache
        
        
            
            
        

3、AJAX
3.1、名词解释
        1、同步
            在一段时间内,只能做一个事情
            同步访问:在访问服务器时,客户端只能等待服务器的响应,不能做其它事情。用户体验非常的差
            代表场合:
                1、输入网址访问页面
                2、a标记的默认跳转
                3、submit按钮的表单提交
        2、异步
            在一段时间内,可以同时干多个事情
            异步访问:在向服务器发送请求时,不耽误用户在网页上做其它的操作
            代表场合:
                1、用户名的重复性验证
                2、聊天室
                3、股票走势图
                4、搜索建议(百度,京东,淘宝 的搜索框)
3.2、什么是AJAX
        Asynchronous Javascript And Xml
        异步的       JS         和  Xml

        本质:使用 JS 提供的 XMLHttpRequest 对象 异步的向服务器发送请求,并接受响应数据(格式是 xml(已过时))
        AJAX中,服务器响应回来的是部分的数据而不是完整的页面,并且可以以无刷新的效果来更改页面中的局部内容

3.3、获取 AJAX核心对象 - XMLHttpRequest
        标准创建:var xhr=new XMLHttpRequest();
        IE8以下 : 
            var xhr=new ActiveXObject("Microsoft.XMLHttp");
        
        允许通过 window.XMLHttpRequest 判断浏览器是否支持 XMLHttpRequest()。如果 window.XMLHttpRequest的值是null的话,说明需要通过 ActiveXObject()创建,否则 需要通过 XMLHttpRequest() 来创建

        var xhr; 
        //判断浏览器是否支持 XMLHttpRequest
        if(window.XMLHttpRequest){
            xhr = new XMLHttpRequest();
        }else{
            //浏览器不支持 XMLHttpRequest
            xhr = new ActiveXObject("Microsoft.XMLHttp");
        }
        练习:
            1、创建 xhr 对象,并且将创建好的对象打印在控制台上观察结果
            2、将 创建 xhr 的步骤封装成一个函数
                1、在 common.js创建一个函数
                    function createXhr(){}
                2、函数体内
                    判断浏览器是否支持 XMLHttpRequest,根据结果创建 xhr 并且将 xhr对象 返回
                3、页面中创建一个按钮,点击按钮时,获取 xhr 对象,并打印在控制台上

3.4、XHR 的常用属性 和 方法(难点)
        1、open() - 方法
            作用:创建请求
            语法:open(method,url,isAsyn)
                1、method
                    string 类型
                    请求方式 :get,post,... ...
                2、url
                    string 类型
                    请求地址
                3、isAsyn
                    boolean 类型
                    指定采用同步(false)还是异步(true)的方式发送请求
            练习:
                1、创建一个网页 getresponse.html ,在网页中创建一个按钮,点击按钮时,实现以下功能:
                    1、创建 / 获取 XHR 对象
                    2、创建一个请求,采用异步的方式,get的提交方法,向 response.php 发送一个请求
        2、readyState - 属性
            作用:表示 xhr 对象的 请求状态
            值:由 0 - 4 表示 5个状态
                0 : 请求尚未初始化
                1 : 已经打开到WEB服务器的连接,正在向服务器发送请求
                2 : 请求完成
                3 : 正在接收服务器端的响应
                4 : 接收响应数据成功
                注意:当 readyState的值为4的时候,表示所有的响应都已经接收完毕。
        3、status - 属性
            作用:服务器的响应状态码
            值:
                只记住一个即可 200
                当 status 的值是 200的时候,表示服务器已经正确的给出所有的响应
        4、onreadystatechange - 事件
            作用:当 xhr 的readyState 属性值发生改变的时候,要自动激发的操作。
            语法:
                xhr.onreadystatechange = function(){
                    //每当xhr.readyState的值,发生变化时,要执行的操作。

                    //判断 xhr.readyState 为4的时候 并且 xhr.status 为 200的时候,才能获取正常的响应数据
                    if(xhr.readyState == 4 && xhr.status == 200){
                        //可以接收响应回来的数据 
                        //responseText 属性,表示服务器响应回来的文本
                        var resText=xhr.responseText;
                    }

                }
        5、send() - 方法
            作用:发送\提交请求
            语法:send(body);
                body : 是请求主体
                没有请求主体的提交方式,body位置处,要写 null
                有请求主体的提交方式,body位置处,编写的就是请求主体的数据
3.5、发送异步请求的步骤
        1、创建 / 获取 XHR 对象
        2、创建请求 :xhr.open()
        3、设置 xhr 的 onreadystatechange 事件
            判断readyState 以及 status 的值,并接收响应
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4&&xhr.status==200){
                    xhr.responseText;
                }
            }
        4、发送请求:xhr.send();

    练习:
        创建一个页面06-ajax-exercise.html,创建一个按钮,点击按钮时,向 06-ajax-exercise.php 异步的发送一个请求,并将 响应回来的数据(欢迎光临) 显示在页面的一个div中

3.6、使用GET提交方式,发送请求数据
        在请求地址后,拼接请求参数(查询字符串)
        ...
        xhr.open("get","xx.php?name=value&name1=value1",true);
        ...

        ex:
        xhr.open("get","check.php?uname=zs&upwd=123",true);
        在 check.php 中,如何获取 uname 和 upwd 值?
        $uname=$_REQUEST["uname"];
        $upwd=$_REQUEST["upwd"];



 

你可能感兴趣的:(js,javascript,ajax)