【ajax】概述、发送请求 ( GET / POST )、解决跨域问题 ( JSONP / CORS )

本文介绍了AJAX的基本概念、XML和JSON数据格式,强调了其异步通信的优点和缺点。详细讲解了AJAX的使用步骤、GET/POST请求的实现,以及如何处理IE浏览器的GET缓存问题。文章深入探讨了跨域问题,包括同源策略、JSONP和CORS解决方案,提供了JSONP的工作原理和CORS的实现方法。
摘要由CSDN通过智能技术生成

一、概述

1、AJAX 简介

        AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML

        通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据

        AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。

2、XML 和 JOSN 格式数据

2.1 XML

概念:XML是可扩展标记语言,被设计用来传输和存储数据。

XML 与 HTML:HTML 中都是预定义标签,而 XML 中没有预定义标签, 全都是自定义标签,用来表示一些数据。

<student> 
    <name>孙悟空</name> 
    <age>18</age> 
    <gender>男</gender> 
</student>

2.2 JOSN

{"name":"孙悟空","age":18,"gender":"男"}

3、AJAX 的特点

3.1 AJAX 的优点

        (1)可以无需刷新页面而与服务器端进行通信。

        (2)允许你根据用户事件来更新部分页面内容。

3.2 AJAX 的缺点

        (1)没有浏览历史,不能回退.

        (2)存在跨域问题 ( 同源 ) 。

        (3)SEO 不友好(爬虫)。

4、AJAX 的使用

4.1 核心对象

        XMLHttpRequest,AJAX 的所有操作都是通过该对象进行的。

4.2 使用步骤

使用步骤:

        (1)创建 XMLHttpRequest 对象。

        (2)设置请求信息(可以设置请求头,看具体需要)。

        (3)发送请求。

        (4)接收响应。

示例:

    <script>
        const btn = document.querySelector('button');
        const content = document.querySelector('.content');

        // 4. 接收响应
        btn.addEventListener('click', () => {

            // 1. 创建 XMLHttpRequest 对象
            const xhr = new XMLHttpRequest();
            xhr.addEventListener('readystatechange', () => {
                if (xhr.readyState === 4) {
                    content.innerHTML = xhr.response;
                }
            })

            // 2. 设置请求信息
            xhr.open('POST', 'http://127.0.0.1:8080/test_post');  // POST 请求也可以使用query 和 params 参数
            // ps: 设置请求头,主要适用于当数据类型是 urlencoded 或者 json 时。 
            xhr.setRequestHeader('Content-type', 'application/json')
            
            // 3. 发送请求
            xhr.send();
        })
    </script>

二、AJAX 案例( GET / POST )

1、搭建测试 ajax 请求服务器(server.js)

// 1. 导入 express 模块
const express = require('express');

// 2. 创建 web 服务器
const app = express();

// 暴露静态资源
app.use(express.static(__dirname + '/src'))

// 3. 调用 app.listen(端口号,启动成功后的回调函数) 启动服务器
app.listen(8080, (err) => {
    if (!err) {
        console.log(`http://127.0.0.1:8080/01_4种状态.html`);
    }
})

2、使用 ajax 创建简单的 html 页面(xxx.html)

    <script>
        const btn = document.querySelector('button');
        const content = document.querySelector('.content');
        // 给按钮绑定监听
        btn.addEventListener('click', () => {
            // 1. 创建 XMLHttpRequest 实例对象
            const xhr = new XMLHttpRequest();

            // 2. 指定发送请求的:method (GET / POST / ...) 、URL
            xhr.open('POST', 'http://127.0.0.1:8080/test_post');  // POST 请求也可以使用query 和 params 参数

            // 3. 发送请求
            xhr.send();
        })
    </script>

xhr 的 4 种状态:

        0:实例出来的那一刻状态就是0,初始状态。

        1:open 已经调用了࿰

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值