IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> AJAX学习(基础学习笔记) -> 正文阅读

[JavaScript知识库]AJAX学习(基础学习笔记)

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

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

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

ajax 应用场景

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

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

ajax实现步骤

????????//1?创建对象

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

????????//3?发送?

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

?


express安装和基本使用

?

?

?1 使用

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

?

?
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()”
刷新会按照当前的时间来更新

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:34:58  更:2021-10-02 14:36:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 21:37:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码