web开发-服务器Controller到前端中的数据传递
一, ajax方式
(一)controller中
1. 定义AjaxResponse类 成员有: status , message, data. 其中 status是成功或失败状态, message是给出的相关信息, data是传递过来的数据
2. 定义返回AjaxResponse对象的controller:
一个实例:
@RequestMapping("createOrder")
@ResponseBody
public AjaxResponse createOrder(String subData, String travellerDetail) {
AjaxResponse response = new AjaxResponse();
response.setStatus(AjaxResponseStatus.FAILED); //先设置状态为失败
String operatorName = getOperator().getOperatorName();
DisneyOrderCreateVo vo = JSON.parseObject(subData, DisneyOrderCreateVo.class);
vo.setOperator(operatorName);
List<TravellerDetail> travellerDetails = new ArrayList<TravellerDetail>();
travellerDetails = JSON.parseArray(travellerDetail, TravellerDetail.class);
try {
orderService.createDsnOrder(vo, travellerDetails);
} catch (Exception e) {
logger.debug(e.getMessage(), e);
response.setMessage(e.getMessage()); // 将失败信息返回到页面
return response;
}
response.setStatus(AjaxResponseStatus.SUCCESS); // 将状态设置为成功
return response;
}
3. 在js中接收controller中返回的AjaxResponse 对象
一个实例:
$.ajax({
url : basepath + "/disney/order/createOrder",
method : 'POST',
data : {"subData":JSON.stringify(subData) , "travellerDetail":JSON.stringify(travellerDetail)}, //将对象序列化为json对象
dataType : "json", //预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断
success:function(res){ // 成功后进行的操作 返回200
if(res && res.status==="SUCCESS"){
createOrderPopwin.close();
window.location.href=basepath+"/disney/order/orderList";
}else if(res && res.status === "FAILED"){
var errorMsg = res.message;
alert(errorMsg);
}
},
error:function(res){ } //失败后进行的操作 除200外的返回状态都执行error
});
-------补充知识:----------
简单的说Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState):
0-未初始化
1-正在初始化
2-发送数据
3-正在发送数据
4-完成
当XMLHttpRequest.readyState为4时,表示请求已经完成可以得到响应结果。当然success和error方法还是根据响应状态码来触发。当XMLHttpRequest.status为200的时候,表示响应成功,此时触发success().其他状态码则触发error().
Jquery的$.ajax()函数只是封装了ajax请求,本质上还是通过JS XMLHttpRequest内置对象来处理的。 )
----------------------------------------------
二, 在controller中的@RequestMapping方法中通过参数Model 来传递数据
三, 在controller中的@RequestMapping方法中通过返回值Map来传递数据
四, 在controller中通过ModelAndView 来传递参数,
一个实例:
@RequestMapping("/tourVisitorList")
public ModelAndView tourVisitorList(@RequestParam(required = true) String tourGroupMark) {
tourGroupMark = StringUtils.trimToNull(tourGroupMark);
ModelAndView mav = new ModelAndView("opPage/jn/signUp/tour_visitor_list");
tourGroupMark = StringUtils.trimToNull(tourGroupMark);
Map<String, Object> idSaleMap = new HashMap<>();
Map<String, Object> idCusMap = new HashMap<>();
mav.addObject("idSaleMap", idSaleMap);
mav.addObject("idCusMap", idCusMap);
return mav;
}
其中, ModelAndView mav = new ModelAndView("opPage/jn/signUp/tour_visitor_list"); 设置返回的页面. mav.addObject("xxx",XXX); 设置传递的数值.
此传递的数值在freemark中渲染, 不需要@responseBody.
web开发-服务器Controller到前端中的数据传递的更多相关文章
- ASP.NET MVC3中Controller与View之间的数据传递总结
一. Controller向View传递数据 1. 使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...
- ASP.NET MVC3中Controller与View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一. Controller向Vie ...
- Asp.net MVC中 Controller 与 View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ...
- MVC中Controller与View之间的数据传递
一.Controller向View传递数据 Controller向View传递数据有3种形式: 通过ViewData传递 在Controller里面的Action方法中定义ViewData,并且赋值, ...
- web开发-前端到服务器Controller中的数据传递
一, ajax方式 1. ajax获取页面中的数据,包括表单中的数据, 然后封装成对象,数组, 字符串, 或其他基本类型的数据. 2. 将封装得到的数据通过ajax传递到controller中(注:在 ...
- 将Controller中的数据传递到View中显示
如何将Controller 中的数据传送到View 步骤: (1)要有数据,如果要用到对象可以在Model 中定义对应的类 (2)要有装数据的容器: System.Text.StringBuilder ...
- 剖析 Rails 3 MVC 中的数据传递
引用链接:https://www.ibm.com/developerworks/cn/web/1108_linhx_rails3mvc/ 如果读者已经开发过基于 Rails 的应用,但对其 MVC 间 ...
- 后端list集合中的数据传递到前台HTML中显示(表格形式)
关键字:web项目中前后台数据传递问题 在学习web项目的过程中,我们肯定会遇到前后台数据交换问题.这个问题我也思考了很久,今天借此总结一下.由于博主水平有限,如有不当之处,还请大家多多指正,,废话不 ...
- springmvc中的数据传递
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; impo ...
随机推荐
- AJAX 简介
什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...
- MYSQL中的SELECT查询时进行运算
SELECT在mysql中是查询表中的数据的作用,但也可以在查询的时候直接进行运算,然后返回查询后的结果 比如 )) FROM username2 其中的IFNULL函数是对adven数据进行判断,若 ...
- Andoid java文件中的Log检查工具
AndroidLogChecker 由于发布软件版本的时候我们需要把Log注释掉,此工具可以检查java类中的Log所在行以及是否已经注释. Github: https://github.com/cu ...
- Win7_64位使用Mysql Odbc
1.首先不能安装Mysql Odbc 64位,因为我们的Mysql是32位,使用Mysql Odbc 64位连接Mysql 32位,报错:驱动程序与应用程序之间的体系结构不匹配. 2.要安装Mysql ...
- (六)C语言之typedef详解
1.typedef可以看作type define的缩写,顾名思义就是类型定义,也就是说它只是给已有的类型重新定义了一个方便使用的别名,并没有产生新的数据类型.typedef的使用与宏定义define有 ...
- 【Todo】LR-逻辑回归
因为逻辑回归对于计算广告学非常重要.也是我们平时广告推荐.CTR预估最常用到的算法.所以单独开一篇文章讨论. 参考这篇文章:http://www.cnblogs.com/sparkwen/p/3441 ...
- Java中的Double类型计算
一.问题的提出: 如果我们编译运行下面这个程序会看到什么?public class Test{ public static void main(String args[]){ Sy ...
- git reset 理解
http://www.open-open.com/lib/view/open1397013992747.html 一般在工作中用的比较多的是: git reset --hard <commitI ...
- Mybatis学习(贰)
一.类型别名typeAlias 1.在mapper文件中:实体作为resultType,多次书写在配置文件中,每次需要书写权限名(com.baizhi.yanxj.entity.User),代码比较繁 ...
- VMware Workstation 12 Pro虚拟机下载(含序列号)
VMware Workstation 12 Pro 官网下载地址:http://www.vmware.com/products/workstation/workstation-evaluation V ...