不多说话首先看前台
$.ajax({ url : "http://192.168.1.57:8080/TestM/testAndroid.do", type : "get", dataType : 'jsonp', jsonp : "callbackParam", jsonpCallback: "success_jsonCallback", //dateType : "json", success : function(data){ //console.log(data); for(var i in data){ $("#userListRow").append("<li>"+data[i].name +" " +data[i].age +" " +data[i].email +"</li>"); } $("#testdiv").html("aabb"); }, error : function(){ console.log("error"); } })
这里jsonp 和jsonCallback参数jquery文档给出的是这个解释
简单来说如果使用了
{
jsonp:"callback_param",
jsonCallback:"callback_fun",
}
就相当于请求 xxx.do?callback_param=callback_fun
接着来看后台:
@RequestMapping("testAndroid")
@ResponseBody
public void testAndroid(String callbackParam, HttpServletResponse response) throws JsonProcessingException {
response.setCharacterEncoding("UTF-8");
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<>();
map.put("name", "张三" + i);
map.put("age", i + 1);
map.put("email", "email" + i);
list.add(map);
}
ObjectMapper objectmap = new ObjectMapper();
String json = objectmap.writeValueAsString(list);
PrintWriter pWriter = null;
if(StringUtils.isNotBlank(callbackParam)){ // jsonp
response.setHeader("Content-type", "application/jsonp;charset=UTF-8");
try {
pWriter = response.getWriter();
String result = new String(json.toString().getBytes(), "UTF-8");
pWriter.write(callbackParam+"(" + result + ")");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (pWriter != null) {
pWriter.flush();
pWriter.close();
}
}
}else{ //json
response.setHeader("Content-type", "application/json;charset=UTF-8");
try {
pWriter = response.getWriter();
String result = new String(json.toString().getBytes(), "utf-8");
pWriter.write( result);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (pWriter != null) {
pWriter.flush();
pWriter.close();
}
}
}
}