Controllerjs获取ajax返回值json的json,js获取ajax返回值json给js时,$().datagrid中的columns怎么就能动态生成数据在前端显示出来了?

2662人阅读
Spring(7)
Web前端(7)

简单的来说,注解@ResponseBody是直接返回字符串,而不加这个注解,则springmvc会通过modelandview找到对应的jsp页面,并返回页面内容。(若不理解请看【知识点08】)
至于下图这样,controller直接返回entity层,而页面依然显示为json字符串,是因为springmvc配置中添加了转换器converter:
(其中消息转换器是为了解决返回时中文乱码,起作用的应该是下文示例中MappingJackson2HttpMessageConverter,本文没注入该bean也可使用,是因为mvc:annotation-driven自动注入了。)
&!--添加注解驱动 --&
&&&&&&&&&mvc:annotation-driven&
&&&&&&&&&&&&!--
消息转换器,解决中文返回乱码问题--&
&&&&&&&&&&&&mvc:message-convertersregister-defaults=&true&&
&&&&&&&&&&&&&&beanclass=&org.springframework.http.converter.StringHttpMessageConverter&&
&&&&&&&&&&&&&&&&propertyname=&supportedMediaTypes&value=&text/charset=UTF-8&/&
&&&&&&&&&&&&&&/bean&
&&&&&&&&&&&&/mvc:message-converters&
&&&&/mvc:annotation-driven&
将user自动转换为json字符串,然后返回为页面内容。
----------------------------------------------------------------------------------------------------
SpringMVC处理 AJAX请求很简单,只需要在方法的前面加上
@ResponseBody即可。一般返回 String(可以是JSON, XML,普通的
Text),也可以是 Object。
1.返回 Json字符串
1.1.在 controller里添加下面的方法
&&&@RequestMapping(value=&/ajax&)
&&&@ResponseBody //处理 AJAX请求,返回响应的内容,而不是
&&&public String handleAjax() {
&&&&&&&return &{username: \&Josh\&, password:\&Passw0rd\&}&;
1.2.访问http://localhost:8080/ajax
输出的内容正是方法 handleAjax()里返回的内容。
2.自动把对象转换为 Json
不直接返回 Json字符串,而是返回一个对象,SpringMVC自动的把对象转换为
Json,需要 Jackson。
2.1.在 pom.xml里添加依赖
&&&dependency&
&&&&&&&groupId&com.fasterxml.jackson.core&/groupId&
&&&&&&&artifactId&jackson-databind&/artifactId&
&&&&&&&version&2.5.3&/version&
&&&/dependency&
2.2.在 spring-mvc.xml里配置
&&&&mvc:annotation-driven&
&&&&&&&&mvc:message-converters register-defaults=&true&&
&&&&&&&&&&&&beanclass=&org.springframework.http.converter.StringHttpMessageConverter&&
&&&&&&&&&&&&&&&&constructor-argvalue=&UTF-8& /&
&&&&&&&&&&&&/bean&
&&&&&&&&&&&&bean class=&org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&&
&&&&&&&&&&&&&&&&propertyname=&objectMapper&&
&&&&&&&&&&&&&&&&&&&&beanclass=&com.fasterxml.jackson.databind.ObjectMapper&&
&&&&&&&&&&&&&&&&&&&&&&&&propertyname=&dateFormat&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&beanclass=&java.text.SimpleDateFormat&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&constructor-arg type=&java.lang.String&value=&yyyy-MM-dd HH:mm:ss&/&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&/bean&
&&&&&&&&&&&&&&&&&&&&&&&&/property&
&&&&&&&&&&&&&&&&&&&&/bean&
&&&&&&&&&&&&&&&&/property&
&&&&&&&&&&&&/bean&
&&&&&&&&/mvc:message-converters&
&&&&/mvc:annotation-driven&
2.3.在 controller里添加下面的方法
&&&@RequestMapping(value=&/json&, method= RequestMethod.GET)
&&&@ResponseBody
&&&public Address getAddress() {
&&&&&&&Address address = new Address();
&&&&&&&address.setId(101);
&&&&&&&address.setStreet(&五菱街&);
2.4.定义 Address类
public class Address {
&&&private S
&&&public int getId() {
&&&public void setId(int id) {
&&&&&&&this.id =
&&&public String getStreet() {
&&&public void setStreet(String street) {
&&&&&&&this.street =
2.5.访问http://localhost:8080/json
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(2)(3)(1)(1)(15)datagrid 对json数据的读取 - ITeye问答
&meta charset="UTF-8"&
&title&Basic DataGrid - jQuery EasyUI Demo&/title&
&link rel="stylesheet" type="text/css" href="easeUI/themes/default/easyui.css"&
&link rel="stylesheet" type="text/css" href="easeUI/themes/icon.css"&
&link rel="stylesheet" type="text/css" href="easeUI/demo/demo.css"&
&script type="text/javascript" src="easeUI/jquery.min.js"&&/script&
&script type="text/javascript" src="easeUI/jquery.easyui.min.js"&&/script&
&script type="text/javascript"&
$(document).ready(function(){
$('#datagrid').datagrid({
toolbar:'#tb',
url : 'lawService.action',
title:'Load Data',
columns : [ [ {
field : 'id',
width : '100',
checkbox:true
field : 'time',
title : '标题',
width : '100',
align : 'center'
field : 'title',
title : '时间',
width : '100',
align : 'center',
idField:'id',
loadMsg:'Processing, please wait …',
pagination:true
&h2&Basic DataGrid&/h2&
&div class="demo-info"&
&div class="demo-tip icon-tip"&&/div&
&div&The DataGrid is created from markup, no JavaScript code needed.&/div&
&div style="margin:10px 0;"&&/div&
&table id="datagrid" class="easyui-datagrid" style="width:500height:250px"&
&div id="tb" style="padding:5height:auto"&
&div style="margin-bottom:5px"&
&a href="#" class="easyui-linkbutton" iconCls="icon-add" plain="true"&add&/a&
&a href="#" class="easyui-linkbutton" iconCls="icon-edit" plain="true"&edit&/a&
&a href="#" class="easyui-linkbutton" iconCls="icon-cut" plain="true"&delete&/a&
Date From: &input class="easyui-datebox" style="width:80px"&
To: &input class="easyui-datebox" style="width:80px"&
&a href="#" class="easyui-linkbutton" iconCls="icon-search"&Search&/a&
&& 经过测试该datagrid中url的action的请求返回值是:{"total":3,"row":[{"id":"1","time":"时间time","title":"法律title"},{"id":"2","time":"时间1time","title":"法律1title"},{"id":"3","time":"时间2time","title":"法律2title"}]}
该返回值和官网中自定义的json数据格式一样。
&& question:在datagrid中的columns为什么不能加载json的数据??求教!!!
采纳的答案
:{"total":3,"rows":[{"id":"1","time":"时间time","title":"法律title"},{"id":"2","time":"时间1time","title":"法律1title"},{"id":"3","time":"时间2time","title":"法律2title"}]}
已解决问题
未解决问题查看: 4811|回复: 9
注册时间最后登录阅读权限10积分160精华0帖子
注册会员, 积分 160, 距离下一级还需 40 积分
后台返回的数据,我放到session中了,在js里我从session中返回的值拿到,如何填充进datagird里面?
注册时间最后登录阅读权限200积分7601精华0帖子
参考demo/data/AjaxService.aspx
注册时间最后登录阅读权限10积分160精华0帖子
注册会员, 积分 160, 距离下一级还需 40 积分
是这样的,我datagrid上面有一个toolbar,在输入toolbar上的搜索条件后,进入后台查询想要的数据,但是返回的类型我不能让我的后台用response.getWriter().write的方式出来,我只能放到session里面去,然后手动进行填充datagrid,现在就是不知道如何手动吧session里面的值放到datagrid里,并且是reload的状态。
现在就一个问题:在js里从session里面吧datagrid所需要的值拿到,但是不能把上次查询的数据清空的问题。
注册时间最后登录阅读权限200积分7601精华0帖子
你后台从session获取数据后,response将其返回就好了。
注册时间最后登录阅读权限10积分160精华0帖子
注册会员, 积分 160, 距离下一级还需 40 积分
返回出来的数据不会自动填充到datagrid里面,如何填充?
注册时间最后登录阅读权限10积分160精华0帖子
注册会员, 积分 160, 距离下一级还需 40 积分
管理员没有看明白我的意思,我的意思是,我返回的方式不能用response方式把datagrid的数据。
因为我同一个后台还带的有其他数据需要返回到前台,而那些数据必须用request返回出来,所以我想知道如何手动去填充datagrid。
注册时间最后登录阅读权限150积分18850精华0帖子
lifestyle.m1k 发表于
管理员没有看明白我的意思,我的意思是,我返回的方式不能用response方式把datagrid的数据。
因为我同一个 ...
加载数据,可以用setData();
var data=[{...}]
grid.setData(data);
注册时间最后登录阅读权限10积分160精华0帖子
注册会员, 积分 160, 距离下一级还需 40 积分
那如果我查询后的数据,在此请求后台后,如何清空上一次保留在datagrid的数据呢,请管理员明见。
注册时间最后登录阅读权限10积分160精华0帖子
注册会员, 积分 160, 距离下一级还需 40 积分
另外,total是不是需要单独也要手动进行绑定呢?
因为我直接把data放进去不行,必须setData(data['data']);这样才可以。
但是绑定上数据以后没有具体的“总条数”
注册时间最后登录阅读权限200积分7601精华0帖子
你这个功能怎么那么别扭呢?
后台提供一个JSON数据,符合datagrid需要的数据结构,就能正常显示了。
你数据放在session或database,对我们来说没有任何区别。
只需要最后通过response返回JSON数据就好了。
如果每个表格都处理成现在那么麻烦,那根本没有节省任何工作量啊。
Powered by2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2016年10月优秀小版主
2016年8月优秀小版主2016年7月优秀小版主优秀小版主2015年7月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2014年11月论坛优秀版主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 js解析ajax返回的json 的文章

 

随机推荐