AJAX学习(基础学习笔记)

传统网站中存在的问题
1网速慢的情况下,页面加载时间长,用户只能等待

ajax 
概述:他是浏览器提供的一套方法,可以实现页面刷新更新数据,提高用户浏览器应用的体验

缺点:没有浏览历史,不能后退
存在跨域问题
SEO不友好

ajax 应用场景

1 页面上拉加载,更多的数据
2 列表数据无刷新分页
3 表单离开焦点数据验证
4 搜索框 提示文字下拉列表
 

ajax 的运行环境
ajax技术需要运行在网站环境中才能生效

ajax实现步骤

        //1 创建对象

        //2 初始化,设置请求方法和  url

        //3 发送 

        //4 事件绑定 处理服务器端返回的结果

AJAX学习(基础学习笔记)

 


express安装和基本使用
AJAX学习(基础学习笔记)

 AJAX学习(基础学习笔记)

 

 1 使用

express  右键文件选择集成中端打开,打开写有express的js文件

AJAX学习(基础学习笔记)

 

 
2 ajax的请求类型方法  get  post  all 

//1引入express
const express = require('express');
//2创建应用对象
const app = express();
//3创建路由规则
//request 是对请求报文的封装
//response 是对响应报文的封装

//get
app.get('/server',(request,response)  =>{
    //设置响应头 这是允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    //设置响应体
    response.send('Hello AJAX GET')
});

//post
app.post('/server',(request,response)  =>{
    response.setHeader('Access-Control-Allow-Origin','*');
    response.send('Hello AJAX  POST')
});

//all  all可以接受任意类型请求
app.all('/server',(request,response)  =>{
    response.setHeader('Access-Control-Allow-Origin','*');
    //响应头,设置什么类型的响应头都能接受到
    response.setHeader('Access-Control-Allow-Headers','*');
    response.send('Hello AJAX  POST')
});

//json数据处理

app.all('/json-server',(request,response)  =>{
    response.setHeader('Access-Control-Allow-Origin','*');
    //响应头,设置什么类型的响应头都能接受到
    response.setHeader('Access-Control-Allow-Headers','*');
    //响应一个数据
    const data = {
        name:'牛虎'
    }
    //数据进行转换 send(字符串)
    let str = JSON.stringify(data);
    //响应体
    response.send(str);
});


//4监听端口启动服务
app.listen(8000,()=>{
    console.log("服务器已启动,8000端口监听中....");
})

2.1 get请求

<body>
    <button class="btn">点击发送get请求</button>
    <textarea name="" id="text" cols="30" rows="10"></textarea>
    <script>
        //获取button按键
        const btn = document.querySelector('.btn');
        //获取文本框
        const te = document.querySelector('#text');
        //绑定点击事件
        btn.addEventListener('click',function(){
           
            //1 创建对象
            const xhr = new XMLHttpRequest();
            //2 初始化,设置请求方法和  url
            xhr.open('GET','http://127.0.0.1:8000/server?a=100&b=200&c=300');
            //3 发送 
            xhr.send();
            //4 事件绑定 处理服务器端返回的结果
            /* 
                 on  when 当。。。。。的是时候
                 readystate 是xhr 对象中的属性,表示状态 0 1 2  3(返回部分结果)  4(服务端返回所有的结果) 
                 change 改变
            */
           xhr.onreadystatechange = function(){
               //判断(服务器端返回了 所有的结果)
               if(xhr.readyState ===4){
                   //判断状态码 200 404 403 401 500
                   //响应状态码 2**  2开头的都是代表成功的
                   if(xhr.status >= 200 && xhr.status < 300){
                       //处理结果    行    头  空行 体
                       //1 响应行
                       console.log(xhr.status);//状态码
                       console.log(xhr.statusText);//状态字符串
                       console.log(xhr.getAllResponseHeaders());//所有响应头
                       console.log(xhr.response);//响应体
                       te.innerHTML = xhr.response;
                   }

               }
           }
        });

    </script>
</body>
 

2.2post请求
 

<body>

   <textarea name="" id="text" cols="30" rows="10"></textarea>

   <script>

       const test = document.querySelector('#text');

    

        test.addEventListener('mouseover',function(){

        //1 创建对象

       const xhr = new XMLHttpRequest();

        //2 初始化,设置请求方法和  url

        xhr.open('POST',"http://127.0.0.1:8000/server");

        //设置请求头,固定写法  content-type设置请求体内容类型    application/x-www-form-urlencoded参数查询字符串类型

        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        //3 发送 

        //xhr.send()

        xhr.send('2133132156123niuhu');//设置请求体213313256123niuhu

        //4 事件绑定 处理服务器端返回的结果

        xhr.onreadystatechange = function(){

            if(xhr.readyState === 4){

                if(xhr.status >=200 && xhr.status < 300){

                    test.innerHTML = xhr.response;

                }

            }

        }

        });

   </script>

</body>






2.3 all(可以接受所有类型)请求

<body>

   <textarea name="" id="text" cols="30" rows="10"></textarea>

   <script>

       const test = document.querySelector('#text');

    

        test.addEventListener('mouseover',function(){

        //1 创建对象

       const xhr = new XMLHttpRequest();

        //2 初始化,设置请求方法和  url

        xhr.open('POST',"http://127.0.0.1:8000/server");

        //设置请求头,固定写法  content-type设置请求体内容类型    application/x-www-form-urlencoded参数查询字符串类型 

        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');



          //自定义响应头类型,值,同时要在server.js设置         //响应头,设置什么类型的响应头都能接受到 response.setHeader('Access-Control-Allow-Headers','*');

        xhr.setRequestHeader('name','niuhu')

   

        //3 发送 

        //xhr.send()

        xhr.send('2133132156123niuhu');//设置请求体213313256123niuhu

        //4 事件绑定 处理服务器端返回的结果

        xhr.onreadystatechange = function(){

            if(xhr.readyState === 4){

                if(xhr.status >=200 && xhr.status < 300){

                    test.innerHTML = xhr.response;



                }

            }

        }

        });

   </script>

</body>


 

2.4 json数据转换  


<body>

    <textarea name="" class="text" cols="30" rows="10"></textarea>

    <button class="button">点击获取json</button>

    <script>

        const text = document.querySelector(".text");

        const btn = document.querySelector(".button")

        text.addEventListener("keydown",function(){



            const xhr = new XMLHttpRequest();

            xhr.responseType = 'json';

            xhr.open("GET","http://127.0.0.1:8000/json-server");

            xhr.send();

            xhr.onreadystatechange = function(){

                if(xhr.readyState === 4){

                    if(xhr.status >=200 && xhr.status < 300){



                        text.innerHTML = xhr.response.name;

                    }

                }

            }

        })

    </script>

</body>

 针对ie缓存机制 ajax解决方案,加一个参数 “+Date.now()”
刷新会按照当前的时间来更新

AJAX学习(基础学习笔记)

 

上一篇:HTTP 头部解析【红宝书 P713-P714】


下一篇:Python第三阶段学习AJAX