ajax数据交互 手动搭建后台

1.前言

在自学CSS的时候发现form这个表单标签 form,每次提交,都会刷新页面 ,数据重复请求,页面出现闪动,这样会增加后台的压力。学到后面发现ajax这个东西,页面不用刷新,就可以刷新界面数据 ,实时进行数据交互(异步的),然后自己无聊手动搭建一个后台模拟下ajax的数据交互。

2 .准备工作

首先在node.js官网上下载并安装好node.js
安装完毕后 直接win+R 打开cmd
输入node -v即可出现node.js的版本
在这里插入图片描述然后在电脑属性的环境变量path中添加npm的地址
在这里插入图片描述接下来就是开启本地服务器了
有两种方法
方法一
1.输入命令行npm install anywhere -g 这里是全局变量

2.找到并进入要启动本地服务器的静态文件夹,执行命令:anywhere 它就会自动弹出你的项目页面
在这里插入图片描述显示在8000端口
在这里插入图片描述方法二
安装Visual Studio Code
在这里插入图片描述
然后在里面安装插件Live Server
在这里插入图片描述然后在vscode编辑器的右下角有就会出现一个Go live 按钮,点击即可自动启动本地服务器
启动中…
启动中
自动弹出在本地的5500端口
在这里插入图片描述

3.模拟思路

众所周知
ajax 是一种创建交互式网页应用的一门 网页开发技术
ajax 也是一个对象 毕竟js万物皆对象
所以在模拟之前 我们要套入一个生活中买东西的实例

1 产生买东西的念头 (生成一个ajax对象 创建ajax实例)

           let xhr = new XMLHttpRequest()

2 怎么买 买的方式(获取数据的方式)

	xhr.open(method,url,bool)  (里面有三个参数)
	
	 method =>请求方式
	  (以下这两种获取方式都不安全 都需要进行处理)
               get  拿数据 =>查找   //默认方式
                      输送的数据会在 url的后面拼接
               post 提交数据 => 增加
              提交的数据在network内可以监控 显示
    url =>请求后台地址 ( 存在跨域问题 )
     (一个服务器相当于一栋大楼,每一层都是不同的域名, 
     不同的楼层不能互相访问,
     每一层的房间都是不同的数据接口(端口), 
     不同的端口也不能互相访问)
     
    bool => 同步异步   默认异步 true

3.进行下单 得把你的客户信息发送出去

xhr.send("wd=卡比&age=18") (比如姓名和年龄)

4.检测物流 (目的 拿快递 拿数据)能拿到快递的前提是
客户不出现问题以及物流不出现问题

自身原因
    xhr.readyState的4个状态:
        1.服务已建立
        2.请求已接收
        3.请求处理中
        4.请求已完成
        只有到达状态4 才会成功
              物流追踪系统 实时更新状态改变de方法
               xhr.onreadystatechange = function(){}

物流原因(成功) => 本身指向服务器 服务器存在http状态码
	举下大家最熟悉的状态码: 404 not found
     (2开头 全部成功  304也是ok的)
         1 开头 =>消息
         2 成功
         3 重定向 304也是成功的
         4......手动百度 http状态码

http状态码:
在这里插入图片描述 5.拿快递 在快递柜里面拿到东西(获取数据)

      xhr.response => 后台返回数据

4.node需要安装的包

补充!!需要安装的node.js 所需包
可以找到并进入要启动本地服务器的静态文件夹中使用PowerShell
或者
在Vscode中新建终端

1.node初始化一些操作 即初始化一个项目

在终端输入 npm init
在这里插入图片描述在这里插入图片描述
其实就是新建一个package.json的文件来存放依赖
即:

在这里插入图片描述2.需要安装koa模块
在终端输入命令 npm i -S koa
在这里插入图片描述安装完毕后会显示node_modules这个文件
在这里插入图片描述
然后把跨域的模块引入进来 (解决跨域问题)
在终端输入命令 npm i -S @koa/cors@2
在这里插入图片描述
成功后会显示@koa这个文件
在这里插入图片描述
一切准备就绪

5.源代码

html的代码

<script>
		//下面四行可忽略不看
        //后台数据传输普遍写法
        //let json = JSON.stringify({name:123})//返回的就是JSON格式的一个对象
        //let obj = JSON.parse(json) //把一个JSON转为一个普通对象
        //console.log(obj);
        
        
        //创建ajax实例
        let xhr = new XMLHttpRequest()//生成一个ajax对象

        console.log(xhr);
        
        // 设置 与后台交互的方式 后台的接口方式
        xhr.open ('GET','http://127.0.0.1:5500/')
        //第一个参数是获取数据的方式  第二个参数是后台地址

        //xhr.setRequestHeader("Content-Type:","text/html; charset=utf-8")
        //上面的方法是 post获取方法 需要设置请求头
        
        xhr.send("wd=卡比&age=1")// 传输两条数据 服务建立

        xhr.onreadystatechange = function(){
            if(xhr.readyState ===4){//个人成功了
                //200 ~299 304
                if(xhr.status){//服务器也要成功
                    if(xhr.status >=200 && xhr.status<300||xhr.status ===304){
                        //都成功   可以拿快递了
                        console.log(xhr);
                        console.log(xhr.response);//快递柜
                    }
                }
            }
            
        }

        
    </script>

.js的代码

let Koa = require("koa")//把koa这个模块请求出来
let cors = require("@koa/cors")//解决跨域问题

let app = new Koa()

app.use(cors())//允许跨域 实行后才能跨域访问5500端口

app.use(async data =>{
    data.body = "<p style='color:red'>我是从后台返回的数据</p>"
})

app.listen(5500)

console.log("程序已经启动,运行在5500端口");

运行结果展示
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6.总结

虽然整篇文章没什么技术含量,跟在学校写的报告没什么两样,不过这是我自学的,也是我写的第一篇文章,只是为了让自己记住这些知识所写的。我发现写文章比打游戏更能缓解焦虑。

_b
发布了1 篇原创文章 · 获赞 5 · 访问量 86

猜你喜欢

转载自blog.csdn.net/weixin_40253951/article/details/104542429