ajax _flask

同步访问
    当客户端向服务器发送请求时,服务器在处理过程中,浏览器只能等等,效率偏低
异步访问:
    当客户端向服务器发送请求时,服务器在处理过程中,客户端可以做其他的操作,不需要一直等待,效率偏高
AJAX优点
    1 异步 访问
    2 局部 刷新
    使用场合:
        1 搜索建议
        2 表单验证
        3 表单提交
        
2 AJAX的核心对象 - 异步对象(XMLHttpRequest)
    1 什么是XMLHttpRequest
        简称为xhr
        称为异步对象,代替浏览器向服务器发送请求并接收响应
        xhr 是由JS来提供
    2 创建异步对象(xhr)
        主流的异步对象是 XMLHttpRequest 类型的,并且主流浏览器都支持(IE7+,chrome,Firefox,Safari,Opera) 全部支持,
        但在Ie低版本浏览器中(ie6以及以下),就不支持 XMLHttpRequest,需要使用 ActiveXObject()来创建异步对象
        
        支持 XMLHttpRequest :new XMLHttpRequest()
        不支持 XMLHttpRequest: new ActiveXObject('Microsoft.XMLHTTP')
        
    3 xhr 的成员
    4 AJAX的操作步骤
        1 GET请求
            1 创建xhr 对象
            2 创建请求 - open()
            3 设置回调函数 - onreadystatechange
                判断状态并且接收数据
            4 发送请求-send()
            
                1 方法 - open()
                    作用:创建请求
                    语法:open(method,url,async)
                        method : 请求方法,取值为 'get''post'
                        url :请求地址,字符串
                        async:是否采用异步的方式发送请求
                            true: 使用异步方式发送请求
                            false:使用同步方式发送请求
                    ex:
                        xhr.open('get','/server',true)
                2 属性 - readyState
                    作用:请求状态,通过不同的请求状态值来表示xhr与服务器的交互情况
                    由 0-4 共5个值来表示5个不同的状态
                    0 : 请求尚未初始化
                    1 :xhr已经与服务器建立连接
                    2 :服务器端已经开始接收请求
                    3 : 请求正在处理中
                    4 : 响应已完成
                3 属性 - status
                    作用:表示服务器端的响应状态码
                        200: 表示服务器正解处理所有的请求以及给出的响应
                        404: 请求资源不存在 
                        500:服务器内部错误
                4 属性 - responseText
                    作用:服务器端的响应数据
                5 事件 - onreadystatechange
                    作用:每当xhr的readyState属性值发生改变的时候要触发的操作 - 回调函数
                        在该函数中,只有当readyState的值为4并且status的值为200的时候,就可以正常的接收responseText了
                6 方法 - send()
                    作用:通知xhr 向服务器发送请求
                    语法:send(body)
                        body:表示请求的主体
                            get请求:是没有请求主体的,所以body的值为null
                                xhr.send(null)
                            post请求:是没有请求主体的,所以body的位置处要表示请求数据
                                xhr.send('请求数据')
                                xhr.send('参数=值&参数=值')
        2 POST 请求
            1 请求提交的数据要作为 send()的参数进行提交 xhr.send('参数 = 值&参数=值')
            2 修改请求消息头
                在AJAX中,提交POST请求时,AJAX默认将 Content-Type请求消息头的值修改为"text/plain"了,
                所以导致数据无法正常提交
                解决方案:将 Content-Type的请求消息头再修改回"application/x-www-form-urlencoded"即可
                    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
            Content-Type: application/x-www-form-urlencoded
            
        

 

posted @ 2018-11-06 19:35  Sky__liu  阅读(171)  评论(0编辑  收藏  举报