前端通过Ajax,向后端发送form表单的JSON数据,并后端接收JSON,使用fastJSON解析的一个完整案例

2023-05-16

前端代码
<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width-device width,user scalable-no,initial scale=1.0,maximum-scale=l.0,minimum scale=l.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Ajax</title>

	<!--此处需要引入jQuery和用于序列化的jquery.serializejson-->
    <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/jquery.serializeJSON/2.9.0/jquery.serializejson.js"></script>
</head>
<body>

<form id="form1" name="form1">
	<!--传输JSON数据时需要在input标签中填写name属性-->
    <input id="name" type="text" value="username" name="username">
    <input id="password" type="password"  value="password" name="password">
    <input id="date" type="date" value="2019-01-01" name="date">
</form>
<!--onclick事件调用useAjax方法,若位置在<form>中会刷新页面-->
<button id="btn" onclick="useAjax()">发送ajax请求</button>

<!--数据展示区-->
<div id="show1"></div>
<div id="show2"></div>
<script>
    var useAjax = function(){
		/*2种json序列化的方法,本案例向后端传输的方法为data1*/
        var data1 = JSON.stringify($('#form1').serializeJSON());    /*数据类型:JSON;数据结构,{"name":"xxx","value":"xxx",....}*/    /*使用serializeJSON需要额外调用jquery.serializejson.js*/
        var data2 = JSON.stringify($("#form1").serializeArray());   /*数据类型:JSON数组;数据结构,[{"name":"xxx","value":"xxx",....}]*/
        var show1 = $("#show1");
        var show2 = $("#show2");

        show1.html("JSON:"+data1);
        show2.html("JSON数组:"+data2);

        /*调用ajax*/
        $.ajax({
            url:"http://localhost:8080/ajax",                       /*请求的路径,需要与后端相匹配*/
            contentType:"application/json;charset=UTF-8",           /*固定写法*/
            data:data1,         /*传递的数据内容*/
            type:"post",        /*传递的方式*/
            dataType:"text",    /*预期返回的数据格式;可选择xml,html,script,json,jsonp,text*/   /*当发送的数据并非纯json(例如本案例)会导致发送错误,跳过success方法进入error*/
            success:function (data) {   /*发送&接受均成功后触发,括号内为后端返回的data(可任意命名)*/
                alert(data);    /*弹窗显示回调的结果*/
            },
            error:function () {
                alert("请求出错!");
            }
        });
    };  
</script>

</body>
</html>
后端代码(使用了springboot,fastJSON)
@Controller
public class MainController {

    @ResponseBody
    @PostMapping("/ajax")
    public String Ajax(@RequestBody String data) {
	    
	    /*打印获取的data内容*/
        System.out.println(data);          
        
        //使用alibaba的fastJSON进行数据解析
        AjaxData ajaxData = JSON.parseObject(data, AjaxData.class);
        
        //打印所获取的JSON结果
        System.out.println(ajaxData.getUsername());
        System.out.println(ajaxData.getPassword());
        System.out.println(ajaxData.getDate());
        return "success";		//向前端返回success数据
    }
}



//AjaxData的POJO
public class AjaxData {

    private String username;
    private String password;
    private Date date;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", date=" + date +
                '}';
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

效果图

(某些参数与本案例不同因此显示内容有所不同)
在这里插入图片描述

注意事项

  • fastJSON无法解析JSON数组的data,会提示"依赖{,但发现["的exception
  • JSON.stringify($('#form1').serializeJSON());中的serializeJSON()依赖jquery.serializejson.js,必须额外引入
  • ajax的方法中dataType:如果不使用"text",会触发error方法,建议选择使用text,未发现对后端接受的结果产生影响
引用

https://www.jb51.net/article/133174.htm
https://www.jianshu.com/p/a0a17d5c4725

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端通过Ajax,向后端发送form表单的JSON数据,并后端接收JSON,使用fastJSON解析的一个完整案例 的相关文章

随机推荐

  • 【PX4-AutoPilot教程-3】uORB主题订阅发布机制理解、应用和代码阅读

    uORB主题订阅发布机制 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c 这可以让我们更好的理解PX4 Pixhawk的软件架构和运作 xff1a 应用程序的API xff1a
  • 2020-11-23

    https blog csdn net guofei fly article details 104136008 utm medium 61 distribute pc relevant none task blog BlogCommend
  • MapReduce原理及简单实现

    MapReduce将数据的处理分成了两个步骤 xff0c Map和Reduce Map将输入的数据集拆分成一批KV对并输出 xff0c 对于每一个 lt k1 v1 gt xff0c Map将输出一批 lt k2 v2 gt xff1b R
  • 深度理解Python迭代器

    我们手动的实现一个for循环 xff1a li1 61 list range 10 iteratorObject 61 iter li1 while 1 try print next iteratorObject except StopIt
  • 关于mysql版本差异导致FIND_IN_SET()查询不到数据的问题

    这次发现的问题 xff0c 是在接手项目的时候 xff0c 和安卓端小伙伴测试时候发现的 xff0c 插入数据之后却查不出来 xff0c 通过排查定位到FIND IN SET 函数 xff0c 也是第一次接触FIND IN SET xff0
  • YOLOv4代码学习笔记一

    YOLOV4代码学习笔记一 YOLOV4简介CSPdarknet py学习 本文是对另一个博主的 睿智的目标检测30 Pytorch搭建YoloV4目标检测平台代码的学习 xff0c 由于我是cv新手 xff0c 很多东西不懂 xff0c
  • 无人机光流模块使用技巧

    无人机光流模块使用技巧 光流模块在无 GPS 环境下 xff0c 课实时检测飞机水平移动距离 xff0c 实现对四轴无人机长时间的稳定悬停 图1显示的是湖南优象LC 302光流模块的功能框图 xff0c 光流摄像头拍摄无人机垂直向下的画面
  • CMMI 2.0 和 1.3

    CMMI2 0与1 3在组织形式区别很大 xff0c 很多PA和之前的不太一样了 xff0c 而且PA在2 0中叫实践域 xff0c 1 3中叫过程域 不过其实核心内容没有大的变化 xff0c 只是相关内容的位置进行了调整 xff0c 部分
  • ROS2的RVIZ2无法启动

    在新安装的 xff32 xff2f xff33 2中启动rviz2 xff0c 启动错误 xff0c 显示 Failed to create an OpenGL context BadValue integer parameter out
  • 【TCP 重传、滑动窗口、流量控制、拥塞控制】

    文章目录 重传机制超时重传快速重传SACK方法Duplicate SACK 滑动窗口流量控制那操作系统的缓冲区 xff0c 是如何影响发送窗口和接收窗口的呢 xff1f 窗口关闭 拥塞控制慢启动拥塞避免拥塞发生快速恢复 重传机制 TCP 实
  • 【TCP四次挥手】

    文章目录 TCP 四次挥手过程是怎样的 xff1f 为什么挥手需要四次 xff1f 第一次挥手丢失了 xff0c 会发生什么 xff1f 第二次挥手丢失了 xff0c 会发生什么 xff1f 第三次挥手丢失了 xff0c 会发生什么 xff
  • FreeRTOS事件组----任务同步

    有时 xff0c 应用程序的设计需要两个或多个任务才能彼此同步 例如 xff0c 考虑一个设计 xff0c 其中任务A接收一个事件 xff0c 然后将事件所需的一些处理提供给其他三个任务 xff1a 任务B xff0c 任务C和任务D 如果
  • Qt中给按钮设置颜色的方法

    Qt中给按钮设置颜色的方法 第一种 CSS风格第二种 使用QPalette类第三种 使用QColor的另一种方法 对于界面编程来说 xff0c 色彩无疑是一个重点关注的对象 xff0c 界面好不好看 xff0c 色彩占据一大半 这里我在学习
  • codeblocks下载安装教程(完整详细)

    最近又将codeblocks下载了一下 xff0c 将完整的过程记录一下 一 下载教程 进入codeblocks官网 xff0c http www codeblocks org 点击downloads 一般都会选择第一个Download t
  • 使用VSCode需要安装的一些插件

    下载安装VSCode 下载安装 xff1a https code visualstudio com Download 通用插件 Auto Close Tag xff1a 匹配标签 xff0c 关闭对应的标签 Auto Rename Tag
  • QNAP之Container Station(docker)配置Redis

    本文目的 xff1a 使QNAP通过内置的docker安装redis 安装篇 首先ContainerStation中直接搜redis xff0c 有一个qnap官方提供的3 07版本的redis xff08 3年前 xff09 命令处请务必
  • QNAP之基于Container Station(docker)创建Ubuntu可视化桌面vnc

    型号 xff1a TS 231P 配置 xff1a ARM Cortex A15 CPU 64 1 70GHz 1G内存 目的 xff1a 为nas配置一个基于docker的vnc桌面 步骤概要 xff1a 1 创建一个ubuntu 2 安
  • Docker之基于docker-compose创建vsftpd容器

    前言 因为本人很菜 xff0c 每次配置vsftpd都头疼的要死 又因为网上vsftpd的教程会版本不一导致配置总是会出错 因此尝试使用docker来解决这个问题 而单纯只是用docker每次启动需要输入长串命令 xff0c 因此再结合do
  • 驻点运维人员被客户投诉要求换人,换还是不换?

    项目背景 xff1a 一位朋友提到了这样的情况 xff1a 项目背景是 xff1a 我的项目已经进入到运维阶段 xff0c 公司安排了一个运维人员现场驻点 到现在为止 xff0c 我这边已经多次接到客户的投诉 xff0c 说运维人员做事没有
  • 前端通过Ajax,向后端发送form表单的JSON数据,并后端接收JSON,使用fastJSON解析的一个完整案例

    前端代码 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 view