@responsebody表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
控制层通过map向前台传递数据 如:triggerList和size两个
@RequestMapping(value="/host/getTrigger", method = RequestMethod.POST )
@ResponseBody
public Map<String, Object> getTrigger(Integer templateId , Integer hostId) {
Map<String, Object> modelMap = new HashMap<String, Object>();
System.out.println(templateId+" "+hostId);
List<Integer> general = new ArrayList<Integer>(); //查询hostid=?下的trigger数据所用的valea=1的triggerids
List<Integer> temp = new ArrayList<Integer>();
List<Integer> hostid = new ArrayList<Integer>();
general.add(1);
temp.add(templateId);
hostid.add(hostId);
List<TriggerObject> triggerList = triggerService.findTriggerByhostortemplateid(hostid, temp, general);
modelMap.put("triggerList", triggerList);
modelMap.put("size", triggerList.size());
return modelMap;
}
前台通过data.map的关键字 如data.triggerList和data.size都可以,其中item是取list中每个对象属性的值,i是list每个对象的下表。(鄙人这样粗浅的理解,便于自己记忆,如果有理解不了的可以百度在细细看看。)
success : function(data) {
var size = data.size;
$.each(data.triggerList, function(i, item) {
if(item.value==1||item.priority>=3){
自己的逻辑块。。。
}
});
}
这样也可以:
$.ajax({
url:"check",
type:"post",
data:params,//要传递的数据
dataType:"json",
success:function(m){
var list=m.gslist; / /gslist为map的键
if($("#goodName").html("")!=null){
$("#goodName").html("");
$("#goodName").append("<option>请选择商品</option>") ;
}
for(var i=0;i<list.length;i++){
$("#goodName").append("<option value="+list[i].goods.goodsId+">"+list[i].goods.goodsName+"</option>");
}
},