Ajax简介和实例

2023-11-18

目录

什么是 AJAX ? 

AJAX实例 

ajax-get无参

 ajax-get有参

对象和查询字符串的互转

ajax-post

 ajax-post 表单


AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

什么是 AJAX ? 

菜鸟教程是这样介绍的:

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

AJAX实例 

从前面的学习,我们可以知道get和post的区别,详情见前端学习之HTTP协议的介绍(5)_学前端的狗头苏丹的博客-CSDN博客

ajax-get无参

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 1.创建一个请求实例
        var xhr = new XMLHttpRequest();
        // 2.打开一个链接 open('get/post','URL')
        xhr.open('get','http://121.199.0.35:8888/index/carousel/findAll');
        // 3.发送请求 get携带参数在地址栏 post携带参数在请求体
        xhr.send();
        // 4.监听状态改变 接收响应 onreadystatechange
        // readyState 4 响应完成
        // 0 open未调用 1 open已经调用 2 接收响应头信息 3 接收响应体信息 4 响应完成
        // status 200 响应成功
        xhr.onreadystatechange = function(){
            // 表示响应完成  表示响应成功
            if(xhr.readyState === 4 && xhr.status === 200){
                console.log(xhr.response,'接收响应体');
                var res = JSON.parse(xhr.response);
                console.log(res);
                res.data.forEach(function(item){
                    var div = document.createElement('div');
                    var img = document.createElement('img');
                    div.innerHTML = item.name + ' ' +item.introduce;
                    img.src = item.url;
                    img.style.width = '400px';
                    document.body.appendChild(div);
                    document.body.appendChild(img);
                })
            }
        }
    </script>
</head>
<body>
    
</body>
</html>

 ajax-get有参

利用Qs.stringify() 将对象序列化成URL形式进行拼接,需要引入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.11.1/qs.js"></script>
    <script>
        window.onload = function(){
            /**
             * get请求带参数 分页查询 一页查询11条数据 page1 pageSize 11
            */
            // 1.创建一个XMLHttpRequest请求实例
            var xhr = new XMLHttpRequest();
            var params = {
                page:1,
                pageSize:10
            }
            // 将对象转为查询字符串 将对象 序列化成URL的形式,以&进行拼接  Qs.styingify()
            var paramsString = Qs.stringify(params);
            console.log(paramsString);
            // ?page=1&pageSize=11 查询字符串
            // 2.打开一个链接
            xhr.open('get','http://121.199.0.35:8888/index/article/pageQuery'+'?'+paramsString);
            // 3.发送请求
            xhr.send();
            // 4.监听状态改变 接收响应
            xhr.onreadystatechange = function(){
                if(xhr.readyState === 4 && xhr.status === 200){
                    var response = JSON.parse(xhr.response);
                    console.log(response);
                    var dl = document.createElement('dl');
                    response.data.list.forEach(function(item){
                        var dt = document.createElement('dt'); 
                        var dd = document.createElement('dd');
                        dt.innerHTML = item.title;
                        dd.innerHTML = item.content;
                        dl.appendChild(dt);
                        dl.appendChild(dd);
                        document.body.appendChild(dl);
                    })
                }
            }
        }
    </script>
</head>
<body>
    
</body>
</html>

 

对象和查询字符串的互转

假如不使用Qs的方法,将该怎么转换呢?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var obj = {
            name:'terry',
            age:12,
            title:'标题'
        }

        // 转成查询字符串 ?name=terry&age=12&title=标题
        function queryString(obj){
            var str = '';
            for(let key in obj){
                // key 属性名 obj[key]属性值 
                str += '&'+key+ '=' + obj[key]
            }
            str = str.replace('&','?');
            return str;
        }
        var res= queryString(obj);
        // res ?name=terry&age=12&title=标题   将查询字符串转为对象
        function parse(res){
            var obj = {};
            res.split('&').forEach(function(item){
                if(item.includes('?')){
                    item = item.slice(1);
                }
                // console.log(item);     ["?name=terry","age=12","title=标题"]
                let newArr = item.split('=');
                // console.log(newArr);   [name,terry] [age,12] [title,标题]
                obj[newArr[0]] = newArr[1];
            })
            return obj;
        }
        console.log(parse(res));
    </script>
</head>
<body>
    
</body>
</html>

ajax-post

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 1.创建一个请求实例
        var xhr = new XMLHttpRequest();
        // 2.打开链接
        var obj = {
            username:'admin1',
            password:123321
        }
        xhr.open('post','http://121.199.0.35:8888/user/login');
        // 2.2 设置请求头为json格式 setRequestHeader 
		/**
		 * 1.Content-Type application/json 设置json格式
		 * 2.Content-Type application/x-www-form-urlencoded 设置为表单格式 需要URL转码 用Qs.stringify()
		 * 3.Content-Type text/plain;charset=UTF-8 默认值
		*/
        xhr.setRequestHeader('Content-Type','application/json;charset=UTF-8');
        // 3.发送请求
        xhr.send(JSON.stringify(obj));
        // 4.监听状态改变 接收响应
        xhr.onreadystatechange = function(){
            if(xhr.readyState ===4 && xhr.status === 200){
                console.log(JSON.parse(xhr.response));
            }
        }
    </script>
</head>
<body>
    
</body>
</html>

 ajax-post 表单

需要使用Qs.stringify()将表单转换为URL形式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.11.1/qs.js"></script>
    <script>
        // 1.创建一个请求实例
        var xhr = new XMLHttpRequest();
        // 2.打开一个链接
        xhr.open('post','http://121.199.0.35:8888/baseUser/saveOrUpdate');
        var obj = {
            username:'杰米',
            password:'123456',
            telephone:'15921315421'
        }
        // 2.2设置请求头的格式
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8')
        // 3.发送请求
        xhr.send(Qs.stringify(obj));
        // 4.监听状态改变 接收响应
        xhr.onreadystatechange = function(){
            if(xhr.readyState ===4 && xhr.status === 200){
                console.log(JSON.parse(xhr.response));
            }
        }
    </script>
</head>
<body>
    
</body>
</html>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ajax简介和实例 的相关文章

  • 请解释与 Google Chrome 扩展程序的后台通信

    我已经阅读并重新阅读了此页面 并运行了示例 http code google com chrome extensions background pages html http code google com chrome extension
  • 如何理解 Angular JS 中的控制台错误消息?有什么工具吗?

    我是 Angular JS 的新手 我的第一个问题是如何理解 Angular JS 中控制台的错误消息 我编写了这段用于匹配密码的代码片段 它在控制台上抛出错误 但它工作正常 它是有线的 我无法从这些控制台消息中理解任何内容 谁能指出我为什
  • 如何在文档加载时立即进行 AJAX 调用

    我想在加载文档后立即执行 ajax 调用 我正在做的是加载一个字符串 其中包含我将用于自动完成功能的数据 这就是我所做的 但它没有调用servlet 我删除了对各种 JS 脚本的调用 以使其更清晰 我在代码中做了几个类似的 AJAX 调用
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 如何通过 HTML 按钮播放声音

    我目前通过网站播放音乐的方法是通过 HTML 音频标签 不过我希望能够通过 HTML 按钮来播放它 该按钮应该能够在播放和停止之间切换音乐 我在 JSFiddle 创建了一个示例 但不知道如何实现它 有人可以告诉我如何使用我的 JSFidd
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 将 Sweet Alert 弹出窗口添加到 React 组件中的按钮

    我为 Bootstrap 和 React 找到了这个完美的 Sweet Alert 模块 我在 Meteor 应用程序中使用它 http djorg83 github io react bootstrap sweetalert http d
  • 创建 Cookie 时需要帮助

    我有一个名为yes和另一个名叫no
  • Ember.JS - 如何在同一页面中使用多个模型、控制器和视图?

    我主要了解 Ember JS 的基础知识 大多数示例实际上只处理单个控制器和模型以在页面上显示某些内容 我真的很想用 Ember 构建一个完整的 Web 应用程序 所以有人能告诉我如何组织和连接多个控制器 模型和视图到一个页面中吗 例如 如
  • 如何记录返回的事件发射器

    如何记录所发出的事件stream返回于MyFunc 与 JSDoc MyFunc description param Object opts description return Stream description function My
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • 加载另一个 JS 脚本后加载

    这是我的代码 very big js file lots of html stuff 问题是 这些是异步加载的 有没有办法等待第二个脚本直到第一个脚本加载 如果您使用 jQuery 有一个非常简单的方法可以通过获取脚本 https api
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 我可以使用 jQuery 动态创建文件(及其内容)吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这是我的 HTML 代码 ul li
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o

随机推荐

  • 一个普通聊友质问腾讯客服的录音 过瘾哈

    http yumengluentan uueasy com read htm tid 146 html
  • 关于区块链几个证书的理解

    关于区块链几个证书的理解 FISCO BCOS 1 说明 在FISCO BCOS中 证书这个概念有许多的概念 会在环境与节点配置 部署 构链等步骤中反复出现 例如链证书 机构证书 节点证书和客户端证书等 如下对这些概念和关系进行一个适当的理
  • 使用 source insight 代码跳转时出现 symbol not found 问题

    P S 本篇博客是根据自己的经验来写的 如果大家有不同意见随时交流 1 使用 source insight 代码跳转功能时出现 symbol not found 问题一般是有三种可能 在你添加代码时没有选择 Add tree 选项 创建 p
  • 用Requests和正则表达式爬取猫眼电影(TOP100+最受期待榜)

    目标站点分析 目标站点 猫眼榜单TOP100 如下图 猫眼电影的翻页offset明显在URL中 所以只要搞定第一页的内容加上一个循环加上offset就可以爬取前100 流程框架 1 抓取单页内容 利用requests请求目标站点 得到单个网
  • spring——IOC控制反转

    IOC控制反转思想 一 IOC简介 二 spring创建对象的三种方式 1 无参构造 2 静态工厂 3 实例工厂 三 Bean标签 1 bean标签的scope属性 singleton prototype多例 request session
  • import报错

    错误 import im6 q16 unable to read X window image Resource temporarily unavailable error xwindow c XImportImage 4977 impor
  • MyDLNote - Detection : 2019 CVPR 使用解耦表示(Disentangled Representation)学习的罕见事件检测

    CVPR 2019 Rare Event Detection using Disentangled Representation Learning Ryuhei Hamaguchi Ken Sakurada and Ryosuke Naka
  • Pandas函数set_option()学习笔记

    pd set option 函数用法 import pandas as ps pd set option expand frame repr True True就是可以换行显示 设置成False的时候不允许换行 pd set option
  • Shiro总结和常见面试题

    Shiro总结和常见面试题 一 什么是shiro Shiro是一个强大易用的java安全框架 提供了认证 授权 加密 会话管理 与web集成 缓存等功能 对于任何一个应用程序 都可以提供全面的安全服务 相比其他安全框架 shiro要简单的多
  • 电力系统有哪些大扰动?

    电力系统有哪些大扰动 答 电力系统大扰动主要指 各种短路故障 各种突然断线故障 断路器无故障跳闸 非同期并网 包括发电机非同期并列 大型发电机失磁 大容量负荷突然启停等
  • 游戏笔记本电脑可以进行 3D 建模和渲染吗?有哪些优势与缺点?

    3D 建模和渲染是创建令人惊叹的数字艺术 动画和游戏体验的最流行和最广泛使用的工具之一 随着技术的进步 对运行这些模型的强大计算机的需求呈指数级增长 对于那些寻求强大机器来处理 3D 建模任务的人来说 游戏笔记本电脑已成为一个可行的选择 游
  • R语言系列教程-----一起来学shiny吧(1)

    什么是shiny Shiny是一个R包 可让您轻松地直接从 R 构建交互式 Web 应用程序 应用程序 本系列是个长教程 带你由浅入深学习shiny 我们先使用系统自带的一个例子来介绍一下shiny 我们先导入shiny包 library
  • 华为OD机试 - 矩形相交的面积(Java)

    题目描述 给出3组点坐标 x y w h 1000
  • MD5 JavaCript调用法

    JS代码 code
  • 2、Java入门教程【IDEA】

    1 下载 IDEA社区版 下载地址 IDEA管理JAVA程序的结构 project 项目 工程 module 模块 package 包 class 类 2 创建工程 创建 project 点击 create 后 项目结构如下 创建 pack
  • 计蒜客T1113——整理药名

    先看题干 这道题并不难 如果你对编程语言的基础有很好的掌握 很容易理清整个逻辑 实际上 不涉及到算法的题目都是简单题 笔者带领大家理一下这道题的考察点 1 输入多个不定长字符串 2 将字符串的首字母一律变为大写 分本来就是大写和本来是小写两
  • 【GAN】基础原理讲解及代码实践

    首先什么是 的模型结构 设计 模型的关键 GAN的算法原理 这里输入噪声的随机性就可以带来生成图像的多样性 GAN公式讲解 D 表示判别器对真实图片的判别 取对数函数后我们希望其值趋于 也就是D 趋于 也就是放大损失
  • 【踩坑专栏】idea中的target缺失

    target文件夹缺失 但是在文件中能找到 这个是idea禁止了 我想起来之前我是因为在提交代码时有一些文件显示在commit里 所以禁止了一些文件 应该是那时候把target误禁了 解决办法 1 Ctrl Alt S 找到target 删
  • OpenCV之摄像头捕捉图像

    代码 数据类型 运行效果 代码 之前我找过directshow CameraDS VedioCaptureFromCam之类的东西 发现都不可以用 directshow是因为版本太老了 会出现 http www opencv org cn
  • Ajax简介和实例

    目录 什么是 AJAX AJAX实例 ajax get无参 ajax get有参 对象和查询字符串的互转 ajax post ajax post 表单 AJAX 是一种在无需重新加载整个网页的情况下 能够更新部分网页的技术 什么是 AJAX