【第14章】spring-mvc之ajax

文章目录

  • 前言
  • 一、准备
  • 二、单个值
    • 1.前端
    • 2.后端
    • 3. 结果
  • 三、对象
    • 1.前端
    • 2.后端
    • 3. 结果
  • 四、JSON对象
    • 1.前端
    • 2.后端
    • 3. 结果
  • 五、JSON数组
    • 1.前端
    • 2.后端
    • 3. 结果
  • 总结


前言

AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术,通过在后端与服务器进行少量数据交换,AJAX 可以使网页应用快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面。在实践中,虽然数据交换格式常用的是 JSON 而不是 XML,但 AJAX 这个名字仍然被广泛使用。


一、准备

在这里插入图片描述

<mvc:view-controller path="hello-ajax" view-name="params/ajax"/>
<a href="/hello-ajax">Hello Ajax</a><br>

二、单个值

1.前端

<%--Created by IntelliJ IDEA.User: 张军国001Date: 2024/5/2Time: 21:04To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>ajax</title>
</head>
<body>
<button onclick="btn1()">单个值</button><br>
<button onclick="btn2()">对象</button><br>
<button onclick="btn3()">对象数组</button><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script type="text/javascript">$(function (){console.log("hello ajax")})function btn1(){var name="张三";$.get('${pageContext.request.contextPath}/ajax01?name='+name, function(result) {console.log(result); // 打印返回的数据}).fail(function(jqXHR, textStatus, errorThrown) {console.error('Error: ' + textStatus, errorThrown);});}}
</script>
</body>
</html>

2.后端

package org.example.springmvc.params.controller;import com.alibaba.fastjson2.JSONArray;
import org.example.springmvc.params.entity.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Create by zjg on 2024/5/2*/
@RestController
public class AjaxController {@RequestMapping("/ajax01")public String ajax01(String name){System.out.println(name);return name;}
}

3. 结果

张三

三、对象

1.前端

function btn2(){var data={'id': 1, 'name': '张三' ,'birth':'2024-05-02','relatives':{'k1':'v1','k2':'v2'}};$.post('${pageContext.request.contextPath}/ajax02', data, function(result) {console.log(result); // 打印返回的数据}).fail(function(jqXHR, textStatus, errorThrown) {console.error('Error: ' + textStatus, errorThrown);});
}

2.后端

@RequestMapping("/ajax02")
public User ajax02(User user){System.out.println(user);return user;
}

3. 结果

User(id=1, name=张三, birth=Thu May 02 00:00:00 CST 2024, alias=null, hobbies=null, relatives={k1=v1, k2=v2}, role=null, friends=null)

四、JSON对象

1.前端

function btn3(){var data={'id': 1, 'name': '张三' ,'birth':'2024-05-02','relatives':{'k1':'v1','k2':'v2'}};$.ajax({url: '${pageContext.request.contextPath}/ajax03', // 请求的URLtype: 'POST', // 请求类型(GET、POST等)contentType: 'application/json',dataType: 'json', // 预期服务器返回的数据类型(json、xml、html等)data: JSON.stringify(data),success: function(result, textStatus, jqXHR) {// 请求成功时执行的函数console.log(result); // 打印返回的数据},error: function(jqXHR, textStatus, errorThrown) { // 请求失败时执行的函数console.error('Error: ' + textStatus, errorThrown);}});
}

2.后端

@RequestMapping("/ajax03")
public JSONObject ajax03(@RequestBody JSONObject jsonObject){System.out.println(jsonObject);return jsonObject;
}

3. 结果

{"id":1,"name":"张三","birth":"2024-05-02","relatives":{"k1":"v1","k2":"v2"}}

五、JSON数组

1.前端

function btn4(){var data=[{ 'id': 1, 'name': '张三' ,'birth':'2024-05-02'},{ 'id': 2, 'name': '李四' ,'birth':'2024-05-02'}];$.ajax({url: '${pageContext.request.contextPath}/ajax04', // 请求的URLtype: 'POST', // 请求类型(GET、POST等)contentType: 'application/json',dataType: 'json', // 预期服务器返回的数据类型(json、xml、html等)data: JSON.stringify(data),success: function(result, textStatus, jqXHR) {// 请求成功时执行的函数console.log(result); // 打印返回的数据},error: function(jqXHR, textStatus, errorThrown) { // 请求失败时执行的函数console.error('Error: ' + textStatus, errorThrown);}});
}

2.后端

@RequestMapping("/ajax04")
public JSONArray ajax04(@RequestBody JSONArray jsonArray){System.out.println(jsonArray);return jsonArray;
}

3. 结果

[{"id":1,"name":"张三","birth":"2024-05-02"},{"id":2,"name":"李四","birth":"2024-05-02"}]

总结

回到顶部

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

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

相关文章

学习和“劳动”相关的谚语,柯桥俄语培训

1. Бог труды́ лю́бит. 天道酬勤。 2. В ми́ре нет тру́дных дел, ну́жно лишь усе́рдие. 世上无难事,只怕有心人。 3. У́тро вечера мудренее. 一日之计在于晨。 4. Что посе́ешь,…

cesium 雷达遮罩(电弧球效果)

cesium 雷达遮罩(电弧球效果) 以下为源码直接复制可用 1、实现思路 通过修改“material”材质来实现轨迹球效果 2、代码示例 2.1 index.html <!DOCTYPE html> <html lang="en"><head><!

【初阶数据结构】栈

目录 栈的概念及结构栈的实现栈的结构栈的初始化栈的销毁入栈出栈取栈顶元素判断栈是否为空取栈中元素个数代码测试 完整代码Stack.hStack.ctest.c 栈的概念及结构 栈&#xff1a;是一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。   栈顶&…

[MDK] 介绍STM32使用C和C++混合编程的方法

目录 [MDK] 介绍STM32使用C和C混合编程的方法前言业务场景步骤1基础工程步骤2写代码步骤3添加cpp文件步骤4配置与编译上机现象后记 [MDK] 介绍STM32使用C和C混合编程的方法 前言 搞单片机编程大多数还是使用MDK编程&#xff0c;自己对MDK这个软件也比较熟悉&#xff0c;在网络…

【通信】电子科协通信专题

数字通信 最直观的通信方式-基带通信 问题&#xff1a;①无限大的带宽②天线体积

java回调机制

目录 一、简介二、示例2.1 同步回调2.2 异步回调2.3 二者区别 三、应用场景 一、简介 在Java中&#xff0c;回调是一种常见的编程模式&#xff0c;它允许一个对象将某个方法作为参数传递给另一个对象&#xff0c;以便在适当的时候调用该方法。 以类A调用类B方法为例: 在类A中…

KMP + Compose 跨平台 Android IOS 实战入门

KMP&#xff08;Kotlin Multiplatform&#xff09;是一种面向移动端开发的跨平台框架&#xff0c;使用 Kotlin 语言编写&#xff0c;可实现在 Android 和 iOS 平台上共享代码和逻辑。通过 KMP 框架&#xff0c;我们可以编写一次代码&#xff0c;然后在不同的平台上进行部署和运…

python能够干什么?

python有哪些用途&#xff1f; Python是一种高级编程语言&#xff0c;它被广泛用于各种不同的领域。以下是Python的一些常见用途&#xff1a; 网络应用开发&#xff1a;Python可以用于编写Web应用程序、API、爬虫、网络服务器等。数据科学和机器学习&#xff1a;Python拥有许…

深究muduo网络库的Buffer类!!!

最近在学习了muduo库的Buffer类&#xff0c;因为这个编程思想&#xff0c;今后在各个需要缓冲区的项目编程中都可以用到&#xff0c;所以今天来总结一下&#xff01; Buffer的数据结构 muduo的Buffer的定义如下&#xff0c;其内部是 一个 std::vector&#xff0c;且还存在两个…

Shell编程之条件语句

条件测试 文件测试与整数测试 字符串测试与逻辑测试 if语句 if单分支语句 if双分支语句 if多分支语句 case分支语句 条件测试操作 条件测试操作 1 条件判断 test命令测试表达式是否成立&#xff0c;若成立返回0.否则返回其它数值。 格式 1 test 条件表达式 格式 2 …

【Redis7】了解Redis

1.常见数据库 1.1.键值存储数据库 如 Map 一样的key-value 对&#xff0c;典型代表就是 Redis。 1.2.列存储数据库 关系型数据库是典型的行存储数据库&#xff0c;按行存储的数据在物理层面占用的是连续存储空间&#xff0c;不适合海量数据存储。而按列存储则可实现分布式存储&…

猫不爱喝水是正常的?求求別再被洗脑了!日常可以补水的主食分享

猫不爱喝水正常吗&#xff1f;看给猫喂的什么&#xff0c;喂的罐头的话不爱喝水问题不大。喂的干粮猫还长期不喝水&#xff0c;处于缺水状态&#xff0c;可能会出现便秘、上火、尿黄、尿少等症状。在高温的夏季&#xff0c;猫还可能因脱水而中暑&#xff0c;严重时甚至可能导致…

用c++实现汉诺塔问题、归并排序

6.1.3 汉诺塔问题 【问题】 汉诺塔问题(Hanio tower problem)来自一个古老的传说&#xff1a;有一座宝塔&#xff08;塔A),其上有64个金碟&#xff0c;所有碟子按从大到小由塔底堆放至塔顶。紧挨着这座宝塔有另外两座宝塔&#xff08;塔B和塔C),要求把塔A上的碟子移动到塔C上…

01-xss基本原理

核心:攻击的是前端&#xff0c; 一、课程引入 1、开发一个简单的PHP页面&#xff0c;代码如下&#xff1a; <?php // xss 基础演示代码&#xff1a;从浏览器中接受一个URL地址参数名为content if(isset($_GET[content])){$content$_GET[content];echo "你输入的内容…

再议大模型微调之Zero策略

1. 引言 尽管关于使用Deepspeed的Zero策略的博客已经满天飞了&#xff0c;特别是有许多经典的结论都已经阐述了&#xff0c;今天仍然被问到说&#xff0c;如果我只有4块40G的A100&#xff0c;能否进行全量的7B的大模型微调呢&#xff1f; 正所谓“纸上得来终觉浅&#xff0c;…

进程状态与优先级

Linux内核源代码&#xff1a; 首先我们需要明确一点&#xff0c;Linux操作系统和操作系统的进程状态是不同的 上图大概标识了各个状态对应在操作系统的状态 普通进程 R运行状态&#xff08;running&#xff09;: 并不意味着进程一定在运行中&#xff0c;它表明进程要么是在…

ROS 2边学边练(44)-- 从头开始构建一个视觉机器人模型

前言 从此篇开始我们就开始接触URDF(Unified Robot Description Format&#xff0c;统一机器人描述格式)&#xff0c;并利用其语法格式搭建我们自己的机器人模型。 动动手 开始之前我们需要确认是否安装joint_state_publisher功能包&#xff0c;如果有安装过二进制版本的urdf_…

解密某游戏的数据加密

前言 最近有个兄弟通过我的视频号加我&#xff0c;咨询能否将这个dubo游戏游戏开始前就将数据拿到从而进行押注&#xff0c;于是通过抓包工具测试了下&#xff0c;发现数据有时候是明文&#xff0c;有时候确实密文&#xff0c;大致看了下有这几种加密&#xff1a;Md5aes、Md5&a…

网络层协议之 IP 协议

IP 协议格式 4 位版本&#xff1a;此处的取值只有两个&#xff0c;4&#xff08;IPv4&#xff09;和 6&#xff08;IPv6&#xff09;&#xff0c;即指定 IP 协议的版本。 4 位首部长度&#xff1a;描述了 IP 报头多长&#xff0c;IP 报头是变长的&#xff0c;因为报头中的选项部…

点餐小程序 点餐系统 微信点餐系统 支持微信小程序 支付公众号 可接入第三方配送 全开源uniapp

餐饮连锁v2版-体验后台&#xff08;复制粘贴以下地址到浏览器&#xff0c;打开网址即可登录&#xff0c;) 本文来自&#xff1a;点餐小程序 点餐系统 微信点餐系统 支持微信小程序 支付公众号 可接入第三方配送 全开源uniapp - 源码1688 演示后台&#xff1a;https://diancan.…