什么是AJAX?

按照使用的感觉来看

说到底就是一个可以不刷新网页就能发送POST & GET请求的技术

AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML)

是指一种创建交互式网页应用的网页开发技术

ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。

Ajax 请求的局部更新,浏览器地址栏不会发生变化

局部更新不会舍弃原来页面的内容

原生JS的AJAX实现

【省略,过于繁琐,开发不会使用】

jQuery 封装的 AJAX 请求

Ajax的作用:

网页不刷新的情况下,从服务器中获取数据的解决方案。

这是一个新的局部的请求,并不是整个网页发出的请求

考虑到前端的数据处理,我们需要指定数据格式为JSON

需求的特点 符合 Ajax:

- 我们就是希望能够不刷新网页来进行前后端的数据交互

- 并不是整个网页都需要加载,而是仅仅局部的一个部分需要获取

快速上手:

我们需要一个能使用Ajax的Jquery库文件

并不是所有的Jquery版本都可以发送Ajax,注意这个坑把

1、在头标签中导入Jquery文件:

使用原生JS也不是不可以写,主要是因为太过复杂

<script type="text/javascript" src="jquery-1.12.4.min.js"></script>

2、编写一个可以用来出发事件的元素

<button id="btn"> Ajax触发测试 </button>

3、编写JQ代码

- 首先测试,这个元素是否被JQ绑定,且事件能否成功的触发

- 其次,编写JQ的Ajax请求

原始的JQ版本的Ajax请求是这样编写的:

$.ajax({})

里面需要注入一个对象:

该对象需要以下的一些要素:

- url ,你需要把这个Ajax请求发送到哪里?

- type,这个Ajax请求的方式是哪种?

- data,这个Ajax请求需要携带什么参数?

- success,请求成功之后,得到的数据需要怎么处理?【这个函数对象又被称为是回调函数,也就是响应成功之后要执行的事情】

- dataType,返回的数据类型应该以什么样的格式过来?

    <script type="text/javascript">
$(function () {
$("#btn").click(function () {
// alert("绑定成功,事件触发!!!")
$.ajax({
url: "http://localhost:8080/RBAC/ajax",
type: "post",
data: {
act: "feedBack",
username: "silentHonor101Ark",
password: "DZZ19970906"
},
success:function (data) {
alert(data);
alert(typeof data);
console.log(data);// $("#table").empty();
},
dataType: "json"
});
});
});
</script>

4、发送到JavaWeb的AjaxServlet程序:

- Ajax从页面发送请求过来,服务器封装的请求对象封装了参数信息

从getParameter方法中获取出来

- 其次,我们需要从数据库中根据Ajax发送的参数,用来查询数据,然后给Java对象封装存储

- 前端通用的数据交互格式为Json,所以我们还需要按照Json格式把对象序列化成一个字符串

- 然后调用响应对象的输出对象,把Json格式的字符串写回去给前端

package cn.dai.test.servlettest;

import cn.dai.dao.UserDaoImpl;
import cn.dai.pojo.User;
import cn.dai.service.UserService;
import cn.dai.service.UserServiceImpl;
import cn.dai.servlet.BaseServlet;
import com.alibaba.fastjson.JSON; import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; /**
* @author ArkD42
* @file RBAC
* @create 2020 - 06 - 16 - 8:32
*/ @WebServlet("/ajax")
public class AjaxServlet extends BaseServlet { UserService userService = new UserServiceImpl(new UserDaoImpl()); /**
* /ajax?act=feedBack
* 反馈给前端Ajax不应该跳转,直接写输出流即可
* 数据出于方便前端处理的考虑,统一使用的数据格式为JSON
* @param request
* @param response
* @throws IOException
*/
public void feedBack(HttpServletRequest request, HttpServletResponse response) throws IOException {
// Ajax从前端发送请求,Servlet接受请求,获取关键信息,也就是id主键信息等等,
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("从AjaxTest.jsp获取到的数据: 用户名:" + username + " 密码:" + password);
// 然后在Servlet这里我们就可以调用Service访问数据库,把数据封装成Java对象【或者是集合容器对象】 List<User> allUsers = userService.getAllUsers(); // 对这个对象需要转换成前端能接受处理的JSON格式
String jsonString = JSON.toJSONString(allUsers); // PrintWriter out
PrintWriter writer = response.getWriter(); // 把转换好的格式写给前端
writer.println(jsonString);
}
}

5、具体的数据处理

- 然后这个JSON字符串写给了前端,就会被回调函数的data参数或者什么给获取到

- 这个data对象就会存储数据信息,至于如何调用展示到前端页面上面,就不是这里Ajax细讲的内容了

所以我们总结一下这上面做完之后的感受,

实际上Ajax就是一个用来在不刷新页面的情况下跟后台数据交互的解决方案

所以有时候就是好在不刷新网页获取,有时候坏也在不刷新网页获取

我在学习Ajax总是执着于一个错误的观点:

- ajax会让网页跳转,其次不明白Servlet的内容是干什么

 

【AJAX】Asynchronous JavaScript And XML (非同步的JS & XML)的更多相关文章

  1. AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 最大的 ...

  2. 什么是AJAX? AJAX:”Asynchronous JavaScript and XML”中文意思:异步JavaScript和XML。

    指一种创建交互式网页应用的网页开发技术. AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词. 不是指一种单一的技术,而是有机地利用了一系列相关的技术: web标准( Stan ...

  3. Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码 其中有json的一句话解释

    前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function( ...

  4. ajax(Asynchronous JavaScript and XML) 异步js或者xml

    1.XMLHttpRequest 对象:向服务器发送局部的请求,异步获取执行 a.浏览器支持 b.语法: xmlhttp==new XMLHttpRequest(); xmlhttp.open(&qu ...

  5. AJAX异步的 JavaScript

    什么是AJAX: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...

  6. javascript jsscript .js xml html json soap

    javascript ecma标准的脚本语言用于 jsscript 微软标准的一种脚本语言 .js javascript或jsscript保存成文件的形式可用于在html里重复引用 jsscript只 ...

  7. Ajax技术 - (Asynchronous JavaScript + XML)

    Ajax Ajax = 异步JavaScript和XML,Ajax是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新.可以再网页不重新加载的情况下, ...

  8. AJAX(Asynchronous JavaScript And XML)

    AJAX(Asynchronous JavaScript And XML):异步的javascript和xml技术 作用:在不刷新整个页面的情况下,通过XMLHttpRequest向后台偷偷发起请求, ...

  9. jQuery和ajax【“Asynchronous Javascript And XML】

    环境搭建 搭建一个jQuery的开发环境非常方便,可以通过下列几个步骤进行. 下载jQuery文件库 在jQuery的官方网站(http://jquery.com)中,下载最新版本的jQuery文件库 ...

  10. JavaScript 【非IE DOM2级XML】

    DOM2中的XML IE可以实现了对XML字符串或XML文件的读取,其他浏览器也各自实现了对XML处理功能.DOM2级在document.implementaion中引入了createDocument ...

随机推荐

  1. java 日期 时间

    方法一(线程不安全, 不建议使用)private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ...

  2. Selenium模块的使用(一)

    简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器, 完全模拟浏览器的操作,比 ...

  3. Docker PHP如何启用MySQL扩展

    我下载的镜像是PHP7版本:docker pull php:7.4.30-fpm,容器起名为php7 PHP镜像官方提供了帮助文档,其中提到了相关的命令,这里推荐一篇博客,该博客对于扩展的几个相关命令 ...

  4. mysql8的collate问题和修改

    环境 os:centos 7.6 数据库:8.0.22 64bit 问题: 字段a,b它们的collate不一样,结果关联的时候,发现错误. 查询了以下,发现挺多的,逐个修改挺麻烦的,于是整理了如下s ...

  5. Ubuntu禁止和启动内核更新

    ubuntu禁止和启动内核更新 https://www.cnblogs.com/passedbylove/p/13091002.html https://www.cnblogs.com/sparkde ...

  6. Linux 内核:I2C子系统分析(0)整体框架介绍

    --- title: Linux I2C子系统分析:1-整体框架介绍 EntryName: linux-subsystem-i2c-0-about date: 2020-10-13 04:19:26 ...

  7. shell 根据 指定列 进行 去除 重复行

    根据指定列进行去除重复行 这里的重复是指如果两行的某一列数据相同,则认为是重复数据. 例如:第1行与第2行数据,其中的第2列(以- 作为分隔符)明显是重复的. 100069 - ARM Compile ...

  8. 【论文阅读】TRO2022: A Two-Stage Optimization-Based Motion Planner for Safe Urban Driving

    TRO2022: A Two-Stage Optimization-Based Motion Planner for Safe Urban Driving Summary: 探讨planning过程中 ...

  9. Linux系统用户组管理

    用户管理 ​ 和Windows一样在Linux中也存在许多用户,可以登陆Linux,和Windows不同的是,在Windows中同一时刻只可以存在一个用户登录系统,而在Linux中是允许多个用户同时登 ...

  10. 【OpenVINO™】YOLOv10在CPU上也能实现50+FPS推理—使用OpenVINO C++部署YOLOv10

    ​ 英特尔发行版 OpenVINO 工具套件基于 oneAPI 而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界 ...