【第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://xiahunao.cn/news/3022541.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

根据业务需要自定义下拉组件样式(比如不同的状态颜色)的思考和实现

业务背景 全局使用的查询表单的各种封装&#xff0c;目前需要支持下拉select可以自由配置颜色&#xff0c;与列表中的状态颜色显示一致&#xff0c;提高用户体验需实现如图更直观 思路分析 本质是实现ul的li的文本颜色的配置 结合本项目业务场景&#xff0c;是使用的本公司…

mybatis:Spring junit 测试报错:Failed to load ApplicationContext

Spring junit 测试报错&#xff1a;Failed to load ApplicationContext 解决方法&#xff0c;修改mybatis版本&#xff0c;版本过高导致无法加载依赖

rabbitmq集群搭建失败解决

1. 现象 1. 三台机器都已经修改hosts&#xff0c;各个节点ping节点名正常 2. erlang.cookie各节点值一样 执行下面步骤加入失败 rabbitmqctl stop_app # 停止rabbitmq服务 rabbitmqctl reset # 清空节点状态 rabbitmqctl join_cluster rabbitrabbitmq3 rabbitmqctl start_ap…

杰发科技AC7840——软件Sent_HAL39X

0. 序 截止2024.5.8&#xff0c;杰发的MCU没有硬件Sent功能&#xff0c;因此使用PWM模拟Sent来试试。 测试下7840的软件sent功能。 参考链接&#xff1a;SENT协议应用笔记 - TechPlus汽车工坊的文章 - 知乎 SENT协议 1. Sent功能测试 使用提供的软件Sent代码在7840上测试&a…

代码随想录算法训练营DAY48|C++动态规划Part9|121.买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

文章目录 121.买卖股票的最佳时机思路CPP代码 122.买卖股票的最佳时机II思路CPP代码 123.买卖股票的最佳时机III思路CPP代码 121.买卖股票的最佳时机 力扣题目链接 文章讲解&#xff1a;121.买卖股票的最佳时机 视频讲解&#xff1a;动态规划之 LeetCode&#xff1a;121.买卖股…

【C++】详解STL容器之一的 vector

目录 概述 迭代器 数据结构 优点和缺点 接口介绍 begin end rbegin rend resize reseve insert erase 其他一些接口 模拟实现 框架 获取迭代器 深浅拷贝 赋值重载 reseve resize 拷贝构造 构造 析构 insert erase 其他 概述 vector是STL的容器之一。…

如何避免在抓取Google时被屏蔽?代理IP的7个使用误区

在当今数字化时代&#xff0c;数据采集和网络爬取已成为许多企业和个人必不可少的业务活动。对于爬取搜索引擎数据&#xff0c;特别是Google&#xff0c;使用代理IP是常见的手段。然而&#xff0c;使用代理抓取Google并不是一件轻松的事情&#xff0c;有许多常见的误区可能会导…

C++新特性-线程

主要内容 thread、condition、mutexatomicfunction、bind使用新特性实现线程池&#xff08;支持可变参数列表&#xff09;异常协程其他 1 C11多线程thread 重点&#xff1a; join和detach的使用场景thread构造函数参数绑定c函数绑定类函数线程封装基础类互斥锁mutexconditi…

sql 中having和where区别

where 是用于筛选表中满足条件的行&#xff0c;不可以和聚类函数一起使用 having 是用于筛选满足条件的组 &#xff0c;可与聚合函数一起使用 所以having语句中不能使用select中定义的名字

程序员有什么实用神器?

程序员的实用神器 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 程序员常用的一些神器包括&#xf…

Python数据分析之绘制相关性热力图的完整教程

前言 文章将介绍如何使用Python中的Pandas和Seaborn库来读取数据、计算相关系数矩阵&#xff0c;并绘制出直观、易于理解的热力图。我们将逐步介绍代码的编写和执行过程&#xff0c;并提供详细的解释和示例&#xff0c;以便读者能够轻松地跟随和理解。 大家记得需要准备以下条…

Python实现Chiikawa

写在前面 哈&#xff1f;呀哈&#xff01;本期小编给大家素描版Chiikawa&#xff01; 主人公当然是我们可爱的吉伊、小八以及乌萨奇啦~ Chiikawa小小可爱 《Chiikawa》是一部来自日本的超萌治愈系漫画与动画作品&#xff0c;由作者秋田祯信创作。"Chiikawa"这个名字…

c 双向链表

图片 #include <stdio.h> #include <stdlib.h> #include <string.h>int main(void){ struct film{char name[20];int id;struct film *pre; //前向指针struct film *next; //后向指针 };struct film *headNULL;struct film *ls,*lspre,*work;in…

张大哥笔记:如果不想继续打工,互联网创业或许是最好的出路!

互联网时代最好的出路&#xff0c;就是选择创业&#xff0c;不要选择打工。选择打工很亏&#xff0c;你学到的是打工的本事。而创业&#xff0c;看似不赚钱&#xff0c;看似倒霉&#xff0c;但是会锻炼出了你一天赚几千&#xff0c;甚至几万的本事。 随着互联网越来越被人们所…

Kompas AI图片转换器:高效解决格式不兼容问题

最新Kompas AI&#xff1a;一键转换图片格式&#xff0c;提升工作效率 在数字化的世界里&#xff0c;图片已成为我们交流和分享信息不可或缺的媒介。然而&#xff0c;不同的场景往往需要不同格式的图片&#xff0c;这时&#xff0c;一个高效的图片格式转换工具就显得尤为关键。…

1553B总线接口仿真卡,1553B IP核,适用于航空机载,飞机综合航电等领域

1553B总线接口卡可作为通讯或仿真测试板卡使用&#xff0c;支持USB&#xff0c;PCI&#xff0c;PXI&#xff0c;CPCI&#xff0c;以太网&#xff0c;RS422&#xff0c;RS485等计算机总线平台&#xff0c;单功能&#xff08;1个BC、0-31个RT和1个BM&#xff0c;当前仅可单工作模…

安卓surfaceview的使用方式

1. 什么是surfaceview surfaceview内部机制和外部层次结构 在安卓开发中&#xff0c;我们经常会遇到一些需要高性能、高帧率、高画质的应用场景&#xff0c;例如视频播放、游戏开发、相机预览等。这些场景中&#xff0c;我们需要直接操作图像数据&#xff0c;并且实时地显示到…

win10安装.NET Framework 3.5(包括.net2.0和3.0)

打开控制面板 选择”程序” 点击”启用或关闭Windows功能“ 把.NET Framework 3.5选项勾选即可&#xff0c;若没有下载的&#xff0c;下载即可。 PS:如果下载过程出错&#xff0c;按如下流程&#xff1a; 右击”此电脑”选择“管理”&#xff0c;找到“服务和应用程序”&#x…

揭秘全网热门话题:抖音快速涨粉方法,巨量千川投流助你日增10000粉

在当今社交媒体的时代( 千川投流&#xff1a;hzzxar&#xff09;抖音成为了年轻人分享自己才华和生活的平台。然而&#xff0c;要在抖音上快速获得关注和粉丝&#xff0c;却不是一件容易的事情。今天&#xff0c;我们将揭秘全网都在搜索的抖音快速涨1000粉的秘籍&#xff0c;带…

【嵌入式系统复习总结】第四章 汇编程序设计

文章目录 前情提要第四章 汇编程序设计1. 伪操作的含义&#xff0c;了解几个常用的&#xff1a;GBLA、GBLL 和 GBLS&#xff0c;LCLA、LCLL 和 LCLS&#xff0c;SETA、SETL、SETS&#xff0c;数据定义伪操作&#xff1a;DCB、DCW、DCD&#xff0c;其他常用 伪操作&#xff08;A…