【第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: 张军国001
  Date: 2024/5/2
  Time: 21:04
  To 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', // 请求的URL
        type: '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', // 请求的URL
        type: '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"}]

总结

回到顶部

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32:GPIO输入输出

文章目录 1、GPIO介绍1.1 GPIO的基本结构1.1 GPIO的位结构 2、 GPIO工作模式3、GPIO标准外设库接口函数3.1 RCC接口函数3.2 GPIO接口函数3.2.1 GPIO的读取函数3.2.1 GPIO的写入函数 4、GPIO的初始化 1、GPIO介绍 GPIO&#xff08;General Purpose Input Output&#xff09;通用…

深入大模型量化技术,大模型端侧落地已Ready?

揭秘未来&#xff1a;大模型量化技术如何革新移动AI应用 ©作者|饮水机 来源|神州问学 前言 最近&#xff0c;苹果发布了OpenELM系列模型&#xff0c;参数规模分别为270M、450M、1.1B和3B。与此同时&#xff0c;微软也推出了Phi-3系列模型&#xff0c;其中mini版本的参数…

支付时,中国网联结算与中国银联结算的区别与联系

随着电子商务和互联网支付的快速发展&#xff0c;中国的支付清算市场也呈现出前所未有的繁荣景象。在这个大背景下&#xff0c;中国网联与中国银联作为两大支付清算机构&#xff0c;各自扮演着重要的角色。本文将对两者的区别和联系进行深入探讨&#xff0c;以期对读者有更全面…

【北京迅为】《iTOP-3588开发板快速烧写手册》-第9章ubuntu系统下升级固件

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

智慧公厕,城市现代化公卫变革的关键节点

随着城市的快速发展&#xff0c;公共厕所作为社会基础民生设施&#xff0c;正越来越受到精细化管理的重视。智慧公厕的出现&#xff0c;为传统公共厕所的脏乱臭提供了解决方案&#xff0c;通过物联网、大数据、云计算、自动化控制等先进技术的贡献&#xff0c;使公厕管理更加高…

怎么编辑百度百科个人词条

辑百度百科个人词条是一个相对复杂的过程&#xff0c;需要遵循一定的步骤和规则。以下是百科优化网整理的编辑百度百科个人词条的步骤和注意事项。 1. 确定编辑资格 百度百科个人词条的编辑权主要赋予那些具有一定影响力的公众人物&#xff0c;或者是有一定“身份”的人物&…

大模型驱动的新一代 BI 平台,Sugar BI 开启智慧决策新模式

本文整理自 2024 年 4 月 16 日的 2024 百度 Create 大会上的《大模型驱动的新一代 BI 平台如何开启智慧决策》分享。 全文包括了可视化 BI 分析技术架构、智能图表推荐策略与规则设计、Sugar Bot 智能问数的技术实现流程&#xff0c;以及目前的场景应用等。 1 Sugar BI 产…

【C语言】路漫漫其修远兮,深入[指针]正当下

一. 指针初步 1.概念定义 地址&#xff1a;我们在内存中开辟空间时&#xff0c;为了方便后续访问&#xff0c;每个数据有确切的地址。 指针&#xff1a;指向数据的地址&#xff0c;并将其地址储存在指针变量中。 2.基本运算符 • 取地址操作符&#xff08;&&#xff09; …

OpenHarmony 4.0 实战开发——分布式软总线解析:设备发现与传输

OpenHarmony 的分布式软总线子系统为 OpenHarmony 系统提供的通信相关的能力&#xff0c;包括&#xff1a;WLAN 服务能力、蓝牙服务能力、软总线、进程间通信 RPC&#xff08;Remote Procedure Call&#xff09;等通信能力。 其中主要包括&#xff1a; WLAN 服务&#xff1a;…

【Java开发的我出书啦,各位同仁快过来围观】!!!

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容出书的目的出书的过程书籍的内容 &#x1f4e5;博主的话 &#x1f50a;博主介绍 文章目录 &#x1f50a;博主介绍&#x1f964;本文内容出书的目的出书的过程书籍的内容 &#x1f4e5;博主的话 &#x1f33e;阅读前&#x…

机器学习 | 时间序列预测中的AR模型及应用

自回归模型&#xff0c;通常缩写为AR模型&#xff0c;是时间序列分析和预测中的一个基本概念。它们在金融、经济、气候科学等各个领域都有广泛的应用。在本文中&#xff0c;我们将探索自回归模型&#xff0c;它们如何工作&#xff0c;它们的类型和实际例子。 自回归模型 自回…

Elasticsearch中的三种分页策略深度解析:原理、使用及对比

码到三十五 &#xff1a; 个人主页 在Elasticsearch中&#xff0c;分页是查询操作中不可或缺的一部分。随着数据量的增长&#xff0c;如何高效地分页查询数据急需需要面对的问题。Elasticsearch提供了三种主要的分页方式&#xff1a;from size、scroll和search_after。下面详细…

ICode国际青少年编程竞赛- Python-2级训练场-基础训练4

ICode国际青少年编程竞赛- Python-2级训练场-基础训练4 1、 for i in range(4):if i > 2:Flyer[i].step(3)else:Flyer[i].step(1) Dev.step(Item[3].x - Dev.x)2、 for i in range(6):if i < 3:Flyer[i].step(2)else:Flyer[i].step(3) Dev.step(Item[2].x - Dev.x)3、 …

制造版图大变革!逾10座晶圆厂蓄势待发 | 百能云芯

在全球半导体产业的激烈竞争和市场需求的复杂波动中&#xff0c;晶圆厂建设热潮正在美国兴起&#xff0c;这一波建设浪潮的核心动力之一&#xff0c;便是美国政府推出的《芯片与科学法案》所承诺的巨额补贴&#xff0c;旨在提升美国在全球半导体行业的竞争力。 当地时间4月25日…

翻译《The Old New Thing》 - The new scratch program

The new scratch program - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050422-08/?p35813 Raymond Chen 2005年4月22日 译注&#xff1a;此篇是 翻译《The Old New Thing》 - The scratch program 姊妹篇&#xff0c;对 scratch 程序作…

普通人副业要趁早,5种靠谱且持久的赚钱副业

中年危机、35岁被裁&#xff0c;这些听起来就让人焦虑的词汇&#xff0c;是否也让你感到不安&#xff1f;别担心&#xff0c;只要你早早开启副业之旅&#xff0c;这些都不是问题。 今天&#xff0c;我要为你介绍的这5种副业&#xff0c;不仅能帮你赚钱&#xff0c;还能让你的能…

前端高频面试题 5.08

事件委托 事件委托是前端开发中常用的一种优化性能和代码可维护性的方法&#xff0c;它基于DOM的事件冒泡机制。当一个元素触发事件时&#xff0c;这个事件会按照从顶层到底层的顺序传播&#xff0c;直到最底层的元素&#xff08;通常是文档的根节点&#xff09;。事件委托利用…

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

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

Educational Codeforces Round 165 (Div. 2) A~E

A.Two Friends (思维) 题意&#xff1a; 小 A A A想开一个派对。他有 n n n个朋友&#xff0c;他希望至少有 2 2 2个朋友参加他的派对。 i i i 这个朋友最好的朋友是 p i p_i pi​ 。所有的 p i p_i pi​ 都是不同的&#xff0c;对于每一个 i ∈ [ 1 , n ] i \in [1, n] …

C++之泛型编程---有限双端队列结构容器

引言 为了解决工业领域代码容器的通用化&#xff0c;可以考虑C里的泛型编程概念。假设一个场景需要实时保存最近的n个数据并按照顺序依次处理时&#xff0c;就需要定义一种新的容器来满足要求。当容器不满时&#xff0c;添加数据直接到队尾&#xff0c;当容器数据已经为n个时&a…