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的回调函数,最好将查询结果封装为一个类,每次查询返回这个类,类中包含查询结果或者错误信息。
SSM框架用JSON进行前后端数据传输的更多相关文章
- 运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法
运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\vie ...
- Django 前后端数据传输、ajax、分页器
返回ORM目录 Django ORM 内容目录: 一.MTV与MVC模式 二.多对多表三种创建方式 三.前后端传输数据 四.Ajax 五.批量插入数据 六.自定义分页器 一.MTV与MVC模式 M ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
- ajax学习----json,前后端交互,ajax
json <script> var obj = {"name": "xiaopo","age": 18,"gender ...
- Ajax与json在前后端中的细节解惑
ajax请求JSON Thinkphp中对是否为Ajax的判断,在TP3.2开发手册中有这么一段:“需要注意的是,如果使用的是ThinkAjax或者自己写的Ajax类库的话,需要在表单里面添加一个隐藏 ...
- SSM框架下使用websocket实现后端发送消息至前端
本篇文章本人是根据实际项目需求进行书写的第一版,里面有些内容对大家或许没有用,但是核心代码本人已对其做了红色标注.文章讲解我将从maven坐标.HTML页面.js文件及后端代码一起书写. 一.mave ...
- SpringMvc采用 http+json 实现前后端交互
演示列表 报文表示 一.Json请求和Json响应 实现:Spring4.1.1.RELEASE + jackson2.4.4+JQuery1.10.2 1.pom.xml <propertie ...
- Springboot 前后端数据传输 常见误区
一 content-Type代表的是,传输数据的编码方式 当ajax,JS向后台发起请求的时候,常常会设置content-type,告知服务器前台传输的数据是什么编码方式 1 application/ ...
- SSM框架返回json数据
常见错误:No converter found for return value of type: class .................. 原因分析:这是因为springmvc默认是没有对象 ...
随机推荐
- MyBatis配置文件(七)--environments运行环境
一.environments配置信息: environments的作用是用来配置数据库信息,可以配置多个,其有两个可配的子元素,分别是:事务管理器transactionManager和数据源dataS ...
- LA2238 Fixed Partition Memory Management
题目大意: m(m<=10)个内存区域,n(n<=50)个程序.找出一个方案来,使得平均结束时刻尽量小.题目保证有解. 同一个程序运行在不同大小的内存区域内,其运行时间不同.(注意,这里说 ...
- 删除n天前的文件或文件夹 bat批处理
@echo off @echo deleting... FORFILES /p "D:\a" /D -1 /C "cmd /c echo deleting @file . ...
- fidder下载及使用
fidder 下载地址:https://www.telerik.com/download/fiddler 安装采用默认方式安装即可.
- IoT: 物联网安全测试经验总结
前言 今年早些时候,我参与了许多关于物联网解决方案的安全测试.主要目标是找出体系结构和解决方案中的漏洞.在这篇文章中,我将讨论一些与物联网解决方案的问题和挑战. 什么是物联网? 在你学习有关IPv6的 ...
- Linux 下用Win共享
让win能访问到 linux 的smb 共享: linux 安装 samba: apt-get install samba #然后 vim /etc/samba/smb.conf #找到securit ...
- Asp.Net Core2.0在linux下发布
一.在linux上新建mvc项目发布 可以参考:https://segmentfault.com/a/1190000012428781 也可以看微软官方文档. 大致步骤如下: 1.在linux下安装. ...
- 详谈Windows消息循环机制
一直对windows消息循环不太清楚,今天做个详细的总结,有说错的地方,请务必指出. 用VS2017新建一个win32 Application的默认代码如下: 程序入口 ...
- org.openqa.selenium.ElementNotInteractableException: element not interactable
F12查看元素确实存在的 有人说延长加载时间 webDriver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS); // 等待5秒加载完成 ...
- vue前后端分离
axios前后端交互 安装 一定要安装到`项目目录下 cnpm install axios 配置 在main.js中配置 //配置axios import axios from 'axios' Vue ...