当前位置: 首页 > news >正文

XMLHttpRequest对象的Get请求和Post请求的用法

XMLHttpRequest对象的Get请求和Post请求的用法

Get请求提交数据

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>发送ajax get请求</title>
</head>
<body>
<script type="text/javascript">window.onload = function (){var ajaxBtn= document.getElementById("ajaxBtn");ajaxBtn.onclick = function (){// 第一步:创建XMLHttpRequest对象var request = new XMLHttpRequest();// 第二步:注册回调函数request.onreadystatechange = function () {if (this.readyState == 4) {if (this.status == 200) {// innerHTML可以设置元素内部的HTML代码。(innerHTML可以将后面的内容当做一段HTML代码解释并执行)document.getElementById("mydiv").innerHTML = this.responseText}else{// status:返回请求的状态号alert(this.status)}}}// 第三步:开启通道request.open("Get", "/ajax1/ajaxrequest1", true)// 第四步:发送请求request.send()}}
</script><input type="button" value="ajax" id="ajaxBtn">
<div id="mydiv"></div>
</body>
</html>
package com.ajax.servlet;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/ajaxrequest1")
public class AjaxRequest extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.print("<font>hello ajax</font>");}
}

Post请求提交数据

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="text/javascript">window.onload = function () {document.getElementById("btn").onclick = function () {// 第一步:创建XMLHttpRequest对象var xhr = new XMLHttpRequest();// 第二步:注册回调函数xhr.onreadystatechange = function () {if(this.readyState == 4){if (this.status == 200){document.getElementById("mydiv").innerHTML = this.responseText}else{alert(this.status)}}}// 第三步:开启通道xhr.open("Post", "/ajax1/ajaxrequest", true)// 第四步:发送请求// 设置请求头的内容类型,模拟Ajax提交form表单xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")var username = document.getElementById("username").value;var password = document.getElementById("password").value;xhr.send("username="+username+"&password="+password )}}    
</script>用户名:<input type="text" id="username"><br>
密码:<input type="text" id="password"><br>
<button id="btn">提交</button><div id="mydiv"></div>
</body>
</html>
package com.ajax.servlet;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/ajaxrequest")
public class AjaxRequest3Servlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();// 获取提交的数据String username = request.getParameter("username");String password = request.getParameter("password");out.print("用户名:" + username);out.print("密码:" + password);}
}

GET和POST请求时的区别

  • GET请求提交数据是在“请求行”上提交,而POST请求是在“请求头”。
  • 所以,POST请求需要在open和send方法中添加一行代码xxx.setRequestHeader(),用来设置请求头的内容。

以上代码中出现的XMLHttpRequest对象的方法和属性

onreadystatechange属性

  • 功能:定义当 readyState 属性发生变化时被调用的函数
var xxx = new XMLHttpRequest();
xxx.onreadystatechange = function () {console.log(xxx.readyState)}
}

open()方法

  • 功能:开启通道
  • open(method, url, async, user, psw)
    • method:请求的方式,可以是GET,也可以是POST,也可以是其它请求方式。
    • url:请求的路径(/项目名/@WebServlet路径)
      • 注:@WebServlet路径可以随便填写,但是要和java代码注解的@WebServlet(“/”)一致
    • async:只能是trve或者false,trve表示此ajax请求是一个异步请求,false表示此ajax请求是一个同步请求。
    • user(非必填项):用户名 pwd:密码,用户名和密码是进行身份认证的,说明要想访问这个服务器上的资源,可能需要提供一些口令才能访问。
xxx.open("Get", "/项目名/@WebServlet路径", true)

send()方法

  • 功能:发送请求到服务器
// 发送GET请求到服务器
xxx.send()// 发送POST请求到服务器
xxx.send(string)

responseText属性

  • 功能:以字符串返回响应数据
// 在GET请求中出现的代码
out.print("<font>hello ajax</font>");
document.getElementById("mydiv").innerHTML = this.responseText<div id="mydiv"></div>
  • 以上代码中的字符串内容通过responseText接收,并赋值给div标签中,再使用innerHTML转变成html代码执行

status属性

  • 功能:返回请求的状态号(200: “OK”,404: “Not Found”…)

onblur失去焦点事件 和 onfocus获取焦点

  • onblur功能:当失去焦点时,就发送Ajax POST请求,提交用户名。
    • 什么叫失去焦点?
      • 当你将鼠标点在页面搜索框中输入时,会出现光标,而点击到输入框以外的地方,使得输入框中的光标消失,则为失去焦点。
  • onfocus功能:获取焦点
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>AJAX POST请求验证同户名是否可用</title>
</head>
<body>
<script type="text/javascript">window.onload = function () {document.getElementById("username").onfocus = function () {document.getElementById("tipMsg").innerHTML = ""}document.getElementById("username").onblur = function () {// console.log('失去焦点')var xhr = new XMLHttpRequest();xhr.onreadystatechange = function () {if (this.readyState == 4) {if (this.status == 200) {document.getElementById("tipMsg").innerHTML = this.responseText}else {alert(this.status)}}}xhr.open("POST", "/ajax1/ajaxrequest5", true)xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")var username = document.getElementById("username").value;xhr.send("username=" + username)}}
</script>
用户名:<input type="text" id="username"><span id="tipMsg"></span>
</body>
</html>
http://www.lryc.cn/news/199844.html

相关文章:

  • Tomcat动静分离
  • 一些ECharts配置
  • C调用Objective-C的类和方法
  • 驱动开发day1
  • C++ linux vscode编译
  • 卷积神经网络CNN学习笔记
  • Java的Socket Timeout和tcp的存活探测包是不是一个东西
  • 基于跳蛛优化的BP神经网络(分类应用) - 附代码
  • 基于鹈鹕优化的BP神经网络(分类应用) - 附代码
  • 『ARM』和『x86』处理器架构解析指南
  • Android 13.0 系统设置 app详情页默认关闭流量数据的开关
  • 054协同过滤算法的电影推荐系统
  • 分享一个基于JavaWeb的私人牙科诊所预约挂号就诊系统的设计与实现项目源码调试 lw 开题 ppt
  • 从零开始的C++(十一)
  • 驱动开发day2
  • 【CANoe】文件处理_hex文件读取解析
  • 人脸识别顶会论文及源码合集,含2023最新
  • 介绍drawio和图表使用场景
  • leetcode-1438: 绝对差不超过限制的最长连续子数组
  • 【数据结构初阶】九、排序的讲解和实现(直接插入 \ 希尔 \ 直接选择 \ 堆 \ 冒泡 -- C语言)
  • uview组件使用笔记
  • Linux1024一篇通俗易懂的liunx命令操作总结(第十课)
  • nuxt使用i18n进行中英文切换
  • 机器人制作开源方案 | 行星探测车实现WiFi视频遥控功能
  • Angular main 中的enableProdMode
  • 驱动day2:LED灯实现三盏灯的亮灭
  • Android 编译错误:module xxx1 missing dependencies:xxx2
  • 使用EasyExcel实现Excel导入导出
  • 京东手机销售数据:2023年9月京东手机行业TOP10品牌排行榜
  • 常量字符串