【SpringMVC】——Ajax知识总结

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大二学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQLJava基础Rust

🎈热门专栏:🎊【PythonJavawebVue框架

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎯Ajax概述

😎Ajax 的构成要素

😎Ajax 的工作原理

😎Ajax 的应用实例

😎Ajax 的优点

😎Ajax 的跨域问题

🎯jQuery Ajax 实例

😎 实例1: 获取地址经纬度

😎实例2: 表单验证

🎯原生 JavaScript Ajax 实例

😎实例3: 加载文本文件内容

😎实例4: 加载 XML 文件并显示

🎯Ajax 与数据库交互实例

😎实例5: 从数据库加载内容

😎实例6: AJAX 应用程序


🎯Ajax概述

        Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术使得网页可以在不刷新页面的情况下,从服务器请求并更新数据。Ajax 的全称是 Asynchronous JavaScript and XML(异步JavaScript和XML),它利用了现有的技术标准,包括 HTML/CSS、JavaScript、DOM 和 XMLHttpRequest 对象。

😎Ajax 的构成要素

  • XMLHttpRequest 对象:这是 Ajax 技术的核心,用于在后台与服务器进行异步数据交换。通过这个对象,JavaScript 可以发送请求并接收响应,而无需刷新整个页面。
  • JavaScript 和 DOM:JavaScript 用于编写 Ajax 逻辑,并通过操作 DOM 来动态更新网页内容。
  • CSS:用于定义数据的显示样式,使得更新后的内容能够与页面的其他部分保持风格一致。
  • 数据格式:虽然 Ajax 名称中包含 XML,但实际上 JSON(JavaScript Object Notation)是更常用的数据交换格式,因为它更轻量且易于处理。

😎Ajax 的工作原理

  • 异步请求:Ajax 最大的特点是其异步性,用户触发某个操作后,JavaScript 会创建 XMLHttpRequest 对象,向服务器发送请求,并继续执行其他脚本或响应用户操作,而不会等待服务器响应。
  • 数据处理:当服务器响应到达时,会触发事先定义好的回调函数,该函数处理返回的数据,通常是通过 DOM 操作将数据显示在页面上。
  • 状态和响应:XMLHttpRequest 对象有两个关键属性:readyState 和 statusreadyState 表示请求的状态,值为 4 时表示请求已完成;status 为 200 时表示成功接收到了服务器的响应。

😎Ajax 的应用实例

  • 表单提交:在表单提交时,可以使用 Ajax 异步验证用户输入的信息,如检查用户名是否已被注册。
  • 搜索提示:搜索引擎中的搜索建议功能可以通过 Ajax 实现,用户输入关键字时,无需跳转页面即可显示建议结果。
  • 自动更新:一些网页需要实时展示最新信息,如股票价格或体育赛事数据,Ajax 能够在不刷新页面的情况下定时获取最新数据并更新显示。
  • 动态加载内容:例如,在社交媒体网站中,使用 Ajax 可实现滚动到页面底部时自动加载更多内容,提升用户体验

😎Ajax 的优点

  • 提高用户体验:由于避免了页面重载,用户的浏览体验更加流畅和快速。
  • 减少带宽消耗:Ajax 仅请求必要的数据而非整个页面,减少了数据传输量,节省带宽。
  • 减轻服务器压力:较小的数据请求相比完整的页面请求对服务器的压力更小。
  • 提高兼容性:Ajax 应用独立于浏览器和平台,只要用户的浏览器支持 JavaScript 和 XMLHttpRequest 对象即可。

😎Ajax 的跨域问题

  • 同源策略:浏览器的安全机制限制了 Ajax 请求必须遵守同源策略,即只能请求与当前页面同源(相同协议、域名和端口)的资源。
  • 解决方法:CORS(跨域资源共享)和 JSONP(JSON with Padding)是两种常见的解决跨域问题的方法,它们允许不同源的 Ajax 请求。

🎯jQuery Ajax 实例

😎 实例1: 获取地址经纬度

        在这个实例中,用户在网页上输入一个地址,点击按钮后,通过 Ajax 请求高德地图的 API 接口获取该地址的经纬度,并在页面上显示结果。

  • 请求 URL: "https://restapi.amap.com/v3/geocode/geo"
  • 请求方式: GET
  • 请求参数: address - 用户输入的地址, key - 高德地图 API 密钥
  • 成功回调函数: 处理并显示经纬度数据
  • 示例代码
  • $(function() {
      $("#getLocation").click(function() {
        var address = $("#address").val();
        $.ajax({
          url: "https://restapi.amap.com/v3/geocode/geo",
          dataType: "json",
          type: "GET",
          data: {
            address: address,
            key: "7486e10d3ca83a934438176cf941df0c"
          },
          success: function(data) {
            console.log(data);
            alert("经度: " + data.location.lng + "纬度: " + data.location.lat);
          },
          error: function() {
            alert("请求失败!请稍后再试");
          }
        });
      });
    });
    

        解释:当用户输入地址并点击“获取经纬度”按钮时,上述 JavaScript 代码会触发 Ajax 请求,向高德地图 API 发送带有地址信息的请求,并接收返回的经纬度数据。成功的回调函数会在控制台打印返回的数据,并以弹窗形式显示经纬度信息。

😎实例2: 表单验证

        使用 Ajax 实现表单的实时验证,例如检查用户名是否已存在。

  • 请求 URL: "/checkusername"
  • 请求方式: POST
  • 请求数据: username - 用户输入的用户名
  • 成功回调函数: 显示用户名是否可用
  • 示例代码:
$(function() {
  $("#username").blur(function() {
    var username = $(this).val();
    $.ajax({
      url: "/checkusername",
      dataType: "json",
      type: "POST",
      data: {
        username: username
      },
      success: function(data) {
        if (data.exists) {
          alert("用户名已存在");
        } else {
          alert("用户名可用");
        }
      },
      error: function() {
        alert("请求失败!请稍后再试");
      }
    });
  });
});

        解释:当用户在用户名输入框失去焦点时,上述 JavaScript 代码会触发 Ajax 请求,向服务器发送用户名并检查其是否已存在。成功的回调函数会根据服务器返回的数据,以弹窗形式告知用户用户名是否可用。

🎯原生 JavaScript Ajax 实例

😎实例3: 加载文本文件内容

:使用 XMLHttpRequest 对象从一个 TXT 文件中异步加载数据,并显示在页面上。

  • 请求 URL: "data.txt"
  • 请求方式: GET
  • 成功回调函数: 显示文本文件内容
  • 示例代码:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    document.getElementById("content").innerHTML = xhr.responseText;
  }
};
xhr.open("GET", "data.txt", true);
xhr.send();

        解释:上述 JavaScript 代码创建了一个 XMLHttpRequest 对象,指定请求类型为 GET,异步方式,并定义了 onreadystatechange 事件处理函数。当请求完成并且响应状态为 200 (表示成功) 时,将响应文本显示在具有 id "content" 的 HTML 元素中。最后,通过 open() 和 send() 方法发送请求。

😎实例4: 加载 XML 文件并显示

        使用 XMLHttpRequest 对象从一个 XML 文件中异步加载数据,并在 HTML 表格中显示这些数据。

  • 请求 URL: "data.xml"
  • 请求方式: GET
  • 成功回调函数: 解析并显示 XML 文件内容
  • 示例代码:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var xmlDoc = xhr.responseXML;
    var table = "<tr><th>Name</th><th>Age</th></tr>";
    var x = xmlDoc.getElementsByTagName("user");
    for (var i = 0; i < x.length; i++) {
      table += "<tr><td>" +
                x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue +
                "</td><td>" +
                x[i].getElementsByTagName("age")[0].childNodes[0].nodeValue +
                "</td></tr>";
    }
    document.getElementById("users").innerHTML = table;
  }
};
xhr.open("GET", "data.xml", true);
xhr.send();
      解释:上述 JavaScript 代码创建了一个 XMLHttpRequest 对象,指定请求类型为 GET,异步方式,并定义了 onreadystatechange 事件处理函数。当请求完成并且响应状态为 200 (表示成功) 时,解析返回的 XML 数据,遍历每个用户节点,提取名字和年龄信息,并将其添加到一个 HTML 表格字符串中。最后,将这个表格字符串设置为具有 id "users" 的 HTML 元素的 innerHTML,从而在页面上显示数据。通过 open() 和 send() 方法发送请求。

🎯Ajax 与数据库交互实例

😎实例5: 从数据库加载内容

当用户在输入框中键入字符时,通过 Ajax 请求从数据库检索相关内容,并显示在页面上。

  • 请求 URL: "/search.php"
  • 请求方式: GET
  • 请求数据: query - 用户输入的查询字符串
  • 成功回调函数: 显示搜索结果
  • 示例代码:
document.getElementById("searchBox").addEventListener("input", function() {
  var query = this.value;
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
      var response = JSON.parse(xhr.responseText);
      var resultsDiv = document.getElementById("results");
      resultsDiv.innerHTML = "";
      for (var i = 0; i < response.length; i++) {
        resultsDiv.innerHTML += "<div>" + response[i].name + "</div>";
      }
    }
  };
  xhr.open("GET", "/search.php?q=" + query, true);
  xhr.send();
});

        解释:上述 JavaScript 代码为搜索输入框添加了输入事件监听器。当用户在输入框中输入时,代码将创建一个新的 XMLHttpRequest 对象,指定请求类型为 GET,异步方式,并定义了 onreadystatechange 事件处理函数。请求的 URL 包括用户输入的查询字符串作为参数。当请求完成并且响应状态为 200 (表示成功) 时,解析返回的 JSON 数据,遍历每个结果项,并将其添加到 id 为 "results" 的 HTML 元素的 innerHTML 中,从而在页面上显示搜索结果。通过 open() 和 send() 方法发送请求。

😎实例6: AJAX 应用程序

        一个简单的 CD 目录应用程序,通过 AJAX 从 XML 文件检索 CD 信息,并在 HTML 表格中显示。

  • 请求 URL: "cd_catalog.xml"

  • 请求方式: GET
  • 成功回调函数: 解析并显示 CD 目录信息
  • 示例代码:
function loadXMLDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      var xmlDoc = this.responseXML;
      var table = "<tr><th>Artist</th><th>Title</th></tr>";
      var x = xmlDoc.getElementsByTagName("CD");
      for (var i = 0; i < x.length; i++) {
        table += "<tr><td>" +
                  x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
                  "</td><td>" +
                  x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
                  "</td></tr>";
      }
      document.getElementById("cdTable").innerHTML = table;
    }
  };
  xhttp.open("GET", "cd_catalog.xml", true);
  xhttp.send();
}

        解释:上述 JavaScript 代码定义了一个名为 loadXMLDoc 的函数,该函数创建了一个 XMLHttpRequest 对象,指定请求类型为 GET,异步方式,并定义了 onreadystatechange 事件处理函数。当请求完成并且响应状态为 200 (表示成功) 时,解析返回的 XML 数据,遍历每个 CD 节点,提取艺术家和标题信息,并将其添加到一个 HTML 表格字符串中。最后,将这个表格字符串设置为具有 id "cdTable" 的 HTML 元素的 innerHTML,从而在页面上显示 CD 目录信息。通过 open() 和 send() 方法发送请求。用户可以通过调用 loadXMLDoc 函数来加载和显示 CD 目录。

评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y小夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值