Ajax_00000

contents

Ajax介绍

AJAX(Asynchronous JavaScript And XML)。

XML简介

XML:可扩展标记语言。

XML被设计用来传输和存储数据。

XML和HTML类似,不同的是HTML中都是预定义标签,而XML中没有预定义标签,全都是自定义标签,用来表示一些数据,现在已经被JSON取代了。

HTTP协议

HTTP(hypertext transport protocol:超文本传输)协议:协议详细规定了浏览器和万维网服务器之间互相通信的规则。

一、请求报文:

请求行:

请求头:

空行:

请求体:

二、响应报文:

请求行:

请求头:

空行:

请求体:

Node.js

官网地址:https://nodejs.org

下载安装后,查看安装的Node.js的版本:

打开控制台窗口,输入命令:nodejs -v

Express

官网地址:https://www.expressjs.com.cn

安装

打开Visual Studio Code开发工具。

左侧空白处点击鼠标右键,选择"Open in integrated Terminal"。

输入命令:npm init --yes

按回车键。

输入命令:npm i express

按回车键。

服务代码

js 复制代码
//1. 引入express
const express = require('express');

//2. 创建应用对象
const app = express();

//3. 创建路由规则
// request 是对请求报文的封装
// response 是对响应报文的封装
app.get('/', (request, response)=>{
    //设置响应
    response.send('HELLO EXPRESS');
});

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

启动Express

启动Express:使用node命令:

关闭服务:Ctrl+C

案例

案例准备

页面
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX GET 请求</title>
    <style>
        #result{
            width:200px;
            height:100px;
            border:solid 1px #90b;
        }
    </style>
</head>
<body>
    <button>点击发送请求</button>
    <div id="result"></div>

    <script>
        //获取button元素
        const btn = document.getElementsByTagName('button')[0];
        const result = document.getElementById("result");
        //绑定事件
        btn.onclick = 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
                    // 2xx 成功
                    if(xhr.status >= 200 && xhr.status < 300){
                        //处理结果  行 头 空行 体
                        //响应 
                        // console.log(xhr.status);//状态码
                        // console.log(xhr.statusText);//状态字符串
                        // console.log(xhr.getAllResponseHeaders());//所有响应头
                        // console.log(xhr.response);//响应体
                        //设置 result 的文本
                        result.innerHTML = xhr.response;
                    }else{

                    }
                }
            }


        }
    </script>
</body>
</html>
Express
js 复制代码
//1. 引入express
const express = require('express');

//2. 创建应用对象
const app = express();

//3. 创建路由规则
// request 是对请求报文的封装
// response 是对响应报文的封装
app.get('/server', (request, response)=>{
    //设置响应头  设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    //设置响应体
    response.send('HELLO EXPRESS');
});

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

在浏览器地址栏中输入:
http://127.0.0.1:8000/server


http://localhost:8000/server

Ajax基本使用

server

js 复制代码
//1. 引入express
const express = require('express');

//2. 创建应用对象
const app = express();

//3. 创建路由规则
// request 是对请求报文的封装
// response 是对响应报文的封装
app.get('/server', (request, response)=>{
    //设置响应头  设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    //设置响应体
    response.send('HELLO EXPRESS');
});

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

页面

html 复制代码
<!DOCTYPE html>

<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>AJAX GET 请求</title>
        <style>
            #result{
                width:200px;
                height:100px;
                border:solid 1px #90b;
            }
        </style>
    </head>

    <body>

        <button>点击发送请求</button>
        <div id="result"></div>

        <script>

            //获取button元素。
            const btn = document.getElementsByTagName('button')[0];
            const result = document.getElementById("result");

            //绑定事件
            btn.onclick = 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
                        // 2xx 成功
                        if(xhr.status >= 200 && xhr.status < 300){
                            //处理结果  行 头 空行 体
                            //响应 
                            console.log(xhr.status);//状态码
                            console.log(xhr.statusText);//状态字符串
                            console.log(xhr.getAllResponseHeaders());//所有的响应头
                            console.log(xhr.response);//响应体
                            //设置 result 的文本
                            result.innerHTML = xhr.response;
                        }else{}
                    }
                }


            }

        </script>

    </body>

</html>

测试

相关推荐
Java资深爱好者17 分钟前
VB.NET中如何利用ASP.NET进行Web开发
前端·asp.net·.net
18资源30 分钟前
H5白色大方图形ui设计公司网站HTML模板源码
前端·javascript·html
安得权1 小时前
Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的
linux·前端·ubuntu
我是Superman丶1 小时前
【前端UI框架】VUE ElementUI 离线文档 可不联网打开
前端·vue.js·elementui
sqll5671 小时前
最新简洁大方的自动发卡网站源码/鲸发卡v11.61系统源码/修复版
前端·开源·html
清灵xmf2 小时前
深入解析 JavaScript 事件委托
前端·javascript·html·事件委托
小妖别跑2 小时前
PDA(程序派生地址,Program Derived Address),为什么有这个地址,而不是直接指定地址
前端·智能合约
2301_796982142 小时前
网页打开时,下载的文件text/html/重定向类型有什么作用?
前端·html
重生之我在20年代敲代码2 小时前
HTML讲解(二)head部分
前端·笔记·html·web app
天下无贼!3 小时前
2024年最新版TypeScript学习笔记——泛型、接口、枚举、自定义类型等知识点
前端·javascript·vue.js·笔记·学习·typescript·html