AJAX基础教程

1、引言

就是异步刷新,AJAX要和XMLHttpRequest对象、JavaScript/DOM、CSS、XML一起使用

2、XMLHttpRequest对象

XMLHttpRequest对象,异步的与服务器交换数据,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新
XMLHttpRequest对象是ajax的基础
语法

var xhr = new XMLHttpRequest();

2.1 语法格式

如需将请求发送到服务器,使用XMLHttpRequest()对象的open()、send()方法
send发送的数据,给到open方法的url定义的页面里面

方法描述
open(method,url,async规定请求的类型、URL以及是否异步处理请求。method:请求的类型(GET或者POST);url:文件在服务器上的位置;async:true(异步)或false(同步),这个是默认true的不用设置
send(string)将请求发送到服务器。string:仅用于POST请求

2.2 get请求代码

2.2.1 一个简单的GET请求

<script type="text/javascript">
var xhr = new XMLHttpRequest();xhr.open("get", "data",true);xhr.send();
</script>

其中的data是一个Servlet页面

2.2.2 url加唯一的ID

在上面的例子中,您可能得到的是缓存的结果,为了避免这种情况,向URL添加一个唯一的ID(t=Math.random())

<script type="text/javascript">var xhr = new XMLHttpRequest();xhr.open("get","data?t="+Math.random(),true)xhr.send(); 
</script>

2.2.3 通过GET方法发送数据

向URL添加信息(username = zhangsan、password = 123)

<script type="text/javascript">var xhr = new XMLHttpRequest();xhr.open("get","data?username=zhangsan&password=123",true)xhr.send();
</script>

2.3 post请求代码

一个简单的POST请求

<script>var xhr = new XMLHttpRequest();//一个简单的POST请求xhr.open("POST","data",true);xhr.send(); 
</script>

如果需要像html的form表单那样post数据,请使用setRequestHeader()添加HTTP头,在send()方法中规定发送的数据

<script>var xhr = new XMLHttpRequest();xhr.open("POST","data",true);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");xhr.send("username=zhangsan&password=123");
</script>

2.4 readyState

语法

<script type="text/javascript">var xhr = new XMLHttpRequest();xhr.open("get", "data",true);xhr.send();xhr.onreadystatechange = () => {if (xhr.readyState == 4 && xhr.status == 200) {alert(xhr.responseText);}}
</script>

每当readyState改变时,就会触发。onreadystatechange事件
在onreadystatechange事件中,添加任务
readyState属性存有XMLHttpRequest的状态信息
当readyState等于4且状态为200时,表示响应以就绪

属性描述
onreadystatechange存储函数(或函数名),每当readyState属性改变时,就会调用该函数。
readyState存有XMLHttpRequest的状态。从0到4发生变化。0:请求未初始 1:服务器连接已建立 2:请求已接收 3:请求处理中 4:请求已完成,且响应已就绪
status例:200:“OK”;404:未找到页面

3、例题1–用alert在浏览器输出servlet页面定义的字符串

servlet页面代码

@WebServlet(name = "DataServlet", value = "/data")
public class DataServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");String mess = "刘雨昕新歌未知计划上线啦!!!!";PrintWriter printWriter = response.getWriter();printWriter.write(mess);printWriter.flush();printWriter.close();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}

html页面代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="text/javascript">var xhr = new XMLHttpRequest();xhr.open("post", "data",true);xhr.send();xhr.onreadystatechange = () => {if (xhr.readyState == 4 && xhr.status == 200) {alert(xhr.responseText);}}
</script>
</body>
</html>

4、post例题

点击显示div内容

@WebServlet(name = "DataServlet", value = "/data")
public class DataServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");String name = request.getParameter("name");String pwd = request.getParameter("pwd");PrintWriter printWriter = response.getWriter();printWriter.write("name:"+name+",password:"+pwd);printWriter.flush();printWriter.close();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>#div1 {width: 200px;height: 100px;border: solid 2px rgba(255, 43, 10, 0.96);}</style>
</head>
<body>
<button id="btn">点击显示div</button>
<div id="div1"></div>
<script type="text/javascript">var xhr = new XMLHttpRequest();xhr.open("post", "data", true);xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xhr.send("name=zhangsan&pwd=123");var div = document.getElementById("div1");var btn = document.getElementById("btn");btn.addEventListener('click', () => {div.innerText = xhr.responseText;})</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【无标题】

Linux下不能连接ppa.launchpad.net的问题&#xff08;中科大软件源&#xff09; 警告&#xff1a;操作前请先做好备份。 1. 替换ppa源成中科大源 每个ppa都会在/etc/apt/sources.list.d/目录下创建一个list文件&#xff0c;修改: vi /etc/apt/sources.list.d/ubuntu-toolch…

JAVA找BUG之OOM

大家好哇&#xff0c;我是梦辛工作室的灵&#xff0c;在最近的工作中&#xff0c;又遇到了一个bug&#xff0c;系统运行一段时间后就会频繁OOM&#xff0c;然后直接假死或退出&#xff0c;一度折磨着我&#xff0c;后面不停的翻日志查GC&#xff0c;最后才终于确认位置&#xf…

UNI-APP开发中遇到的坑

UNI-APP开发中遇到的坑 一、页面无法回退二、列表页面下拉刷新不显示数据 一、页面无法回退 在页面中我们一般会在顶部左侧放置一个返回按钮&#xff0c;用户点击返回按钮则关闭当前页面&#xff0c;返回上一层页面。 <uni-nav-bar left-icon"back" title"添…

Python爬虫——urllib_ajax请求的post请求

爬取肯德基官网的门店位置信息&#xff08;现在已经进不去了&#xff0c;所以现在返回的全是-1000&#xff09;&#xff1a; import urllib.request import urllib.parsedef create_request(page):base_url http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opcnamehea…

使用 uiautomator2+pytest+allure 进行 Android 的 UI 自动化测试

目录 前言&#xff1a; 介绍 pytest uiautomator2 allure 环境搭建 pytest uiautomator2 allure pytest 插件 实例 初始化 driver fixture 机制 数据共享 测试类 参数化 指定顺序 运行指定级别 重试 hook 函数 断言 运行 运行某个文件夹下的用例 运行某…

【软件测试面试】腾讯数据平台笔试题-接口-自动化-数据库

数据库题 答案&#xff1a; Python编程题 答案&#xff1a; 接口参数化题 答案&#xff1a; 接口自动化题 答案&#xff1a; 以下是我收集到的比较好的学习教程资源&#xff0c;虽然不是什么很值钱的东西&#xff0c;如果你刚好需要&#xff0c;可以评论区&#…

高斯误差线性单元激活ReLU以外的神经网络

高斯误差线性单位&#xff08;GELU&#xff09;激活函数由加州大学伯克利分校的Dan Hendrycks和芝加哥丰田技术研究所的Kevin Gimpel于2018年引入。激活函数是触发神经元输出的“开关”&#xff0c;随着网络的深入&#xff0c;其重要性也随之增加。最近几周&#xff0c;机器学习…

create database创建数据库失败

瀚高数据库 目录 环境 症状 问题原因 解决方案 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.7 症状 1、执行如下sql语句创建数据库报错。 create database printcdburn with encodingUTF8 OWNERprintcdburn LC_COLLATEzh_CN.UTF-…

github 最简单的使用步骤(个人学习记录~)

github 使用步骤&#xff1a; (11条消息) github新手用法详解&#xff08;建议收藏&#xff01;&#xff01;&#xff01;&#xff09;_github详解_怪 咖的博客-CSDN博客 1.获取ssh密钥 打开输入&#xff1a;ssh-keygen -t rsa -C “git账号” 输入之后一路Enter&#xff08…

谈谈VPN是什么、类型、使用场景、工作原理

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解VPN是什么、以及它的类型、使用场景、工作原理。 目录 一、VPN是什么&#xff1f; 二、VPN的类型 1、站点对站点VPN 2、…

单例模式(java)

目录 概述 结构 代码实现 饿汉式&#xff08;静态变量&#xff09; 饿汉式&#xff08;静态代码块&#xff09; 懒汉式&#xff08;双重检查方式&#xff09; 概述 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式…

labview 弹窗(子vi)

如果你遇到了需要在主vi运行时需要弹窗某个窗口(或者称为子vi,子画面)&#xff0c;而且要主画面和子画面能独立运行各自的循环程序&#xff0c;本文能给你帮助。 本文的精髓在于: wait until Donefalse,表示子VI运行的同时&#xff0c;主vi也继续运行后面的代码&#xff0c;主…

win10下解决git报错 Permission denied(publickey)

今天在csdn的GitCode新建了一个项目&#xff0c;然后在windows下git clone时出现错误 gitgitcode.net: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 完整…

Apache Doris (三十一):Doris 数据导入(九)Spark Load 4- 导入Hive数据及注意事项

目录 1. Spark Load导入Hive非分区表数据 2. Spark Load 导入Hive分区表数据 3. 注意事项 进入正文之前&#xff0c;欢迎订阅专题、对博文点赞、评论、收藏&#xff0c;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; 宝子们订阅、点赞、收藏不迷路&#xff01;抓紧…

拼多多API接口,百亿补贴商品详情页面采集

电商API的数据类型 电商API提供的数据种类多样&#xff0c;一般可分为以下几类&#xff1a; 1.商品数据&#xff1a;商品ID、商品名称、商品价格、库存等。 2.交易数据&#xff1a;订单号、付款时间、收货人等。 3.店铺数据&#xff1a;店铺ID、店铺名称、开店时间、店铺评…

责任链模式

责任链模式 本文链接&#xff1a;https://blog.csdn.net/feather_wch/article/details/131760462 1、是一种行为型设计模式 2、主要角色 抽象处理者具体处理者 3、允许将请求沿着一系列处理者进行传递&#xff0c;直到有一个处理者可以处理该请求 解耦请求 发送者 和 处理…

如何fork GitHub上的官方仓库

在GitHub中&#xff0c;fork表示复制一个仓库到你自己的GitHub账号下&#xff0c;创建一个独立的副本。通过fork操作&#xff0c;你可以在自己的副本中进行修改、改进和实验&#xff0c;而不会影响到原始仓库或其他人的工作。 当你fork一个仓库时&#xff0c;GitHub将会为你创…

使用Canal同步mysql数据到es

一、简介 Canal主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x 二、工作原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记…

常用粗糙集特征选择(属性约简)的算法汇总-基于Feast和MIToolbox工具箱实现

常用粗糙集特征选择&#xff08;属性约简&#xff09;的算法汇总 这些算法主要建立在粗糙集工具箱Feast,MIToolbox进行实现。工具箱的安装&#xff1a;https://blog.csdn.net/qq_44822612/article/details/131816235 MIM&#xff0c; MRMR&#xff0c; MIFS&#xff0c; CMIM…

【云原生】K8S单节点搭建

Kubernetes Kubernetes基础概念架构1、基础环境2、安装kubelet、kubeadm、kubectl 2、使用kubeadm引导集群1、下载各个机器需要的镜像2、初始化主节点 Kubernetes核心实战Pod Kubernetes基础概念 kubernetes具有以下特性&#xff1a; ● 服务发现和负载均衡 Kubernetes 可以使…