SSM框架用JSON进行前后端数据传输

一个根据用户id查找用户信息的简单功能,使用JSON进行数据的传输

前端代码

这里用bootstrap做简单的样式美化,中间留了个div用来异步的显示查询结果,ajax进行前端的数据传输(class内容可以无视,只有美化效果):

<form class="form-horizontal" >
    <label for="firstname" class="col-sm-2 control-label">用户ID</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="user_id" placeholder="请输入用户ID">
    </div>
    <div class="col-sm-offset-2 col-sm-10">
      <button type="button" id="select" class="btn btn-default">查找</button>
    </div>

</form>
<div class="panel-body">
    <h2 class="text-danger text-center">
        <!-- 用来显示查找结果 -->
        <span class="glyphicon" id="select-box"></span>
    </h2>
</div>
$(function(){
$("#select").click(function() {
            $.ajax({
                url : "peopleSelect",
                type : "POST",
                dataType:"json",
                contentType : "application/json;charset=UTF-8",
                <!-- 向后端传输的数据 -->
                data : JSON.stringify({
                    id : $("#user_id").val(),
                }),
                success:function(result) {
                    <!-- 处理后端返回的数据 -->
                    var message= JSON.stringify(result);
                    $("#select-box").html("查询成功" + message);
                },
                error:function(result){
                    $("#select-box").html("查询失败");
                }
            });
        });
});

后端代码

Controller

这里主要用@RequestBody转换接受的JSON为对象,用@ResponseBody转换返回的对象为JSON。 
有两种接受前端数据的方式,一种使用Map接受,一种使用实体类进行接收,使用Map接受的方法为:

@RequestMapping("/peopleSelect")
    @ResponseBody
    public People peopleSelect(@RequestBody Map<String,String> map) {
        //使用map.get方法得到JSON中id对应的值
        long id = Long.parseLong(map.get("id"));
        //查找对应id的用户信息
        People people = peopleService.getById(id);
        //返回用户信息,要使用@ResponseBody将返回值转换为JSON
        return people;
    }

使用实体类接受的话,要求实体类中有对应的属性,如People中有id,name,age属性,只能接受键名为id,name,age的JSON(可以不全有,但不能有People中没有的属性),方法为:

@RequestMapping("/peopleSelect")
    @ResponseBody
    public People peopleSelect(@RequestBody People requestPeople ) {
        //使用requestPeople.getId方法得到JSON中id对应的值
        long id = requestPeople.getId();
        //查找对应id的用户信息
        People people = peopleService.getById(id);
        //返回用户信息,要使用@ResponseBody将返回值转换为JSON
        return people;
    }

最后说几个遇到的问题:

一.点击查找按钮后,页面会快速刷新,看不到返回结果

提交按钮的type一定要设置为button,不要使用submit,因为submit会默认点击提交,而ajax也会提交,这就产生了ajax的返回结果还没看清就因为submit的提交而刷新了页面。

二.后台查询结果没问题,却总是调用ajax的error回调函数

ajax对返回数据的要求很严格,一定要是严格的JSON数据返回才会进行success的回调,只要有一条数据不是严格的JSON格式就会调用error的回调函数,最好将查询结果封装为一个类,每次查询返回这个类,类中包含查询结果或者错误信息。

时间: 2024-10-12 04:07:16

SSM框架用JSON进行前后端数据传输的相关文章

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\views\user\index.html while compiling ejs. 语法错误:失去右括号)在参数列表后面,在.....\views\user\index.html(在这个路径中的index.html)中当编译ejs时. 分析:这个时候应该是模板引擎ejs出现问题,但是ejs已经是一个写好

Django 前后端数据传输、ajax、分页器

内容目录: 一.MTV与MVC模式 二.多对多表三种创建方式 三.前后端传输数据 四.Ajax ? 五.批量插入数据 六.自定义分页器 一.MTV与MVC模式 MTV模型 Django就是基于MTV模型的框架,其中: M:模型层 models.py T:templates V:视图层 views MVC模型 M:模型层 models V:视图层 views C:控制器 controller 本质:django的MTV也是MVC 二.多对多表三种创建方式 第一种:Django ORM自动帮创建 c

Ajax与json在前后端中的细节解惑

ajax请求JSON Thinkphp中对是否为Ajax的判断,在TP3.2开发手册中有这么一段:“需要注意的是,如果使用的是ThinkAjax或者自己写的Ajax类库的话,需要在表单里面添加一个隐藏域,告诉后台属于ajax方式提交,默认的隐藏 域名称是ajax(可以通过VAR_AJAX_SUBMIT配置),如果是JQUERY类库的话,则无需添加任何隐藏域即可自动判断.” 我还没细看它的源代码,搜到的出处在这里 define('IS_AJAX', (strtolower($_SERVER['HT

java连接MySQL数据库 json数据前后端交互

先在下图文件夹中导入相应的jar包,其中第一个红框中的是使用json数据必须导入的两个包,上面5个jar包也是json包,看情况添加,第二个红框是用JDBC连接MySQL数据库必须的包. 连接MySQL的工具类: package com.XXXXXX.util; import java.sql.Connection; import java.sql.DriverManager; public class MysqlUtil { private static Connection conn = n

SSM框架以json格式传给前端页面

配置文件和由Mybatis逆向工程生成了相关的代码见  登录实现 关键的是在Controller层的方法上加入@ResponseBody注解实现json格式 在控制台输出的json格式数据 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath();

json数据前后端传输

1,如果客户端提交的是json类型的元数据,后端php获取后会自动转为数组: 2,如果客户端提交的是json格式的字符串,后端php获取后  如果字符串中引号带有\反斜杠,需要用  stripslashes()  函数给预定义字符去掉\反斜杠,再使用json_decode()转为数组(第二个参数设置为true)或者object(默认); 3,如果客户端提交的是json格式的字符串,后端php获取后  如果字符串中引号没有\反斜杠,json_decode()转为数组(第二个参数设置为true)或者

ajax 前后端数据传输demo实例

先写html页面(test.html): 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf8"> 5 <title>ajax</title> 6 <script type="text/javascript" src='http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js'&

SSM框架中Json数据出现乱码问题

在SpringMVC Controller中返回json数据出现乱码问题,因为没有进行编码,只需要简单的注解就可以了 在@RequestMapping()中加入produces="text/html;charset=UTF-8"属性即可,如下: SpringMVC 映射路径 设置编码,格式 @RequestMapping(value = "/exceptionInfo",produces={"text/html;charset=UTF-8"})

django前后端数据传输学习记录

在开发过程中会遇到这样的情况 后台返回了一堆的数据,是一个列表 例如 datas = [{"a":1, "b":2}, {"c": 3,"d":4}, {"c": 3,"d":4}, {"c": 3,"d":4}] 前端的html可以通过使用 <div id="test"> {% for data in datas