关于spring 通过ajax返回json的问题?
请问spring 通过ajax怎么返回json呢?
这里是我的代码:
前台:
function xiao(){
$.ajax({
url: "<%=basePath %>/ajax/getStars.do",
contentType: "application/json;charset=utf-8",
type: "get",
dataType: "json",
success: function(data) {
alert(data);
},
error: function() {
alert("系统发生异常,请稍候再试!\n\n有任何疑问,请联系系统管理员!");
}
});
}
后台:
@Controller
public class Ajax {
@Autowired
private StarService starService;
private static final Logger logger = LoggerFactory.getLogger( Ajax.class );
@RequestMapping( value = "/ajax/getStars", method = RequestMethod.GET )
@ResponseBody
public String getAllStar( HttpServletResponse response ) {
logger.info( "异步查询明星" );
List<Star> stars = starService.getAllStar();
return null;
}
}
[最优解释]
使用json的包。然后在控制层这样使用
JSONObject jsonObject = new JSONObject();
jsonObject.put("data",stars);
[其他解释]
在spring中配置json解析,然后方法返回Map类型,你只需要将list放入Map中返回,spring会自动解析
[其他解释]
返回的是json串吧?eval(),转成json对象就是啦
[其他解释]
import net.sf.json.JSONObject;
[其他解释]
楼主给分啊
把js这个类型去掉
dataType: "json",
后台加 @ResponseBody会根据返回类型自动转换json
@Controllerjs取值的时候, data就是你要取的list。
public class Ajax {
@Autowired
private StarService starService;
private static final Logger logger = LoggerFactory.getLogger( Ajax.class );
@RequestMapping( value = "/ajax/getStars", method = RequestMethod.GET )
@ResponseBody
public List getAllStar( HttpServletResponse response ) {
logger.info( "异步查询明星" );
List<Star> stars = starService.getAllStar();
return stars;
}
}
楼主给我分啊
[其他解释]
不要拼接的json数据格式,
[其他解释]
这个已经可以返回json了啊
[其他解释]
我需要把list返回,这里只能返回字符串啊
[其他解释]
JSONObject 这个类型需不需要导包的?
[其他解释]
$.getJSON(“url”, 回调函数);jquery这个可以直接获取json数据,方便
[其他解释]
没人吗?。。。。。
[其他解释]
支持。顶
[其他解释]
+1
[其他解释]
$.getJSON(“url”, 回调函数);
这个写在什么地方呢??
[其他解释]
大神们,明天就要到限啦,跪求啊
[其他解释]
既然是返回json了,你方法的返回值,直接是void就可以了。
JSONObject json = new JSONObject();
json.put("endWarehouseList", routeSearchBeanList);
super.response().setCharacterEncoding("UTF-8");
try {
PrintWriter printWrite = super.response().getWriter();
printWrite.write(json.toString());
printWrite.flush();
printWrite.close();
} catch (IOException e) {
logger.error(e, e);
}finally{
super.response().getWriter().close();
}
routeSearchBeanList是一个list,直接返回!
[其他解释]
直接采用jackson的工具,ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(stars)把这个return了就可以了
[其他解释]
springMVC中@ResponseBody标签就相当于转json了,直接返回list集合就ok啥也不用做,只要加入@ResponseBody就可以了
[其他解释]
@Controller
public class AjaxAction {
@Autowired
private StarService starService;
// private static final Logger logger = LoggerFactory.getLogger( AjaxAction.class );
@RequestMapping( value = "/ajax/getStars" )
@ResponseBody
public Object getAllStar( HttpServletResponse response, HttpServletRequest request ) {
// logger.info( "异步查询明星" );
List<Star> stars = starService.getAllStar();
JSONArray json = JSONArray.fromObject( stars );
return json.toString();
}
}
在页面成功返回字符串用eval()函数解析就OK了
[其他解释]
擦,
JSONArray json = JSONArray.fromObject( stars );
用这个就行,只是要导几个包!找找json-lib的一些依赖包吧!