这是Controller的代码
@RequiresPermissions("expertinfo:expInfo:view") @RequestMapping(value="init") public void init(HttpServletRequest request,HttpServletResponse response){ List<ExpInfo> expInfos = expInfoService.getRandom(request.getParameter("all")==null?"":request.getParameter("all")); /* 设置格式为text/json */ response.setContentType("test/json"); /* 设置字符集为""UTF-8"" */ response.setCharacterEncoding("UTF-8"); try { PrintWriter write = response.getWriter(); write.write(getJson(expInfos, 10)); write.flush(); write.close(); } catch (IOException e) { e.printStackTrace(); } } public String getJson(List list,int num){ JSONArray jsonArray = new JSONArray(); JSONObject jsonDate = new JSONObject(); for(int i = 0 ; i < list.size() ; i++){ Object object = list.get(i); //将对象转换为JSON字符串 jsonArray.put(JsonMapper.toJsonString(object)); } jsonDate.put("total", num); jsonDate.put("list", jsonArray); return jsonDate.toString(); }
以下是javascript的代码
Ext.Ajax .request({ url : "ExpInfoController/init", success : function(response, option) { var jlist = eval(""("" + response.responseText + "")""); for ( var i = 1; i < 11; i++) { document.getElementById(i.toString() + "1").innerHTML = jlist.list[i - 1].expId; document.getElementById(i.toString() + "2").innerHTML = jlist.list[i - 1].expName; document.getElementById(i.toString() + "3").innerHTML = jlist.list[i - 1].expSex; document.getElementById(i.toString() + "4").innerHTML = jlist.list[i - 1].expAge; document.getElementById(i.toString() + "5").innerHTML = jlist.list[i - 1].categoryName; document.getElementById(i.toString() + "6").innerHTML = jlist.list[i - 1].expRemark; if (jlist.list[i - 1].check == 1) document.getElementById(i.toString()).checked = true; } } });
本人也引入了ext-all.js和ext-base.js
但是在输出前台界面的时候,直接输出了JSON的字符串,根本就没走这个javascript,运行效果如下
怎么回事,怎么样改正才好。
解决方案:40分
public String getJson(List list,int num){ 这句代码的上面加个@ResponseBody
解决方案:20分
dataType类型未设置成json
解决方案:20分
在响应的contorller上加@ResponseBody,传入到JS上面的数据就是json格式的。直接在页面显示就可以了