我有一些Ajax方法,它们使用HashMap对象从控制器接收数据,一切正常。
这次, 我试图用json类型检索数据。 但是,我的服务器响应错误406(不可接受)。
我不明白为什么服务器无法接收json类型
我遵循了stackoverflow中介绍的每一步 (添加额外的bean标记,更改内容类型等等。)
他们都没有工作
以下是我的代码。
@RequestMapping(value="/report/getMember", produces="application/json",
method=RequestMethod.GET)
public @ResponseBody JSONArray getMember(){
List<HashMap<String,String>> result_dep = reportDao.getDep();
List<MemberForReport> result_member = reportDao.getMemberForReport();
String[] dep_list = new String[result_dep.size()];
for(int i=0; i<result_dep.size(); i++){
dep_list[i] = result_dep.get(i).get("dep");
}
HashMap<String, ArrayList<String>> hash_list = new HashMap<String, ArrayList<String>>();
for(int i=0; i<dep_list.length; i++){
ArrayList<String> member_list = new ArrayList<String>();
for(int j=0; j<result_member.size(); j++){
if(dep_list[i].equals(result_member.get(j).getDep())){
member_list.add(result_member.get(j).getName());
}
}
hash_list.put(dep_list[i], member_list);
}
JSONArray arry = new JSONArray();
List keys = new ArrayList(hash_list.keySet());
for(int i=0; i<keys.size(); i++){
JSONArray arry_child = new JSONArray();
JSONObject json_folder = new JSONObject();
json_folder.put("title", keys.get(i));
json_folder.put("isFolder", true);
for(int j=0; j<hash_list.get(keys.get(i)).size(); j++){
JSONObject json_child = new JSONObject();
json_child.put("title", hash_list.get(keys.get(i)).get(j));
arry_child.put(json_child);
}
json_folder.put("children", arry_child);
arry.put(json_folder);
}
System.out.println("result \n"+arry.toString());
return arry;
}
我的jquery代码
$.ajax({
url: "/asec/document/report/getMember",
type: "get",
ContentType: "application/json",
success: function(data){
alert(data);
// alert ("dd");
},
error: function(request, status, error){
console.log(request.getAllResponseHeaders());
}
});