1.Javascript的写法:jsonp只有get方法,post方法使用的方式跟get一样
$.ajax({
type : 'post',
async : false,
url : baseUrl+'?callback=jsonpCallback',
cache : false,
data:params,
dataType : "jsonp",
jsonp: 'jsonpCallback',
success : function(data) {
}
});
简写:
- $.getJSON("http://app.example.com/base/json.do?jsonpCallback=?",
- function(data){
- });
java后台需要返回一个和回调函数名相同的方法,需要在response设置返回编码,不然会出现中文乱码
@ResponseBody
@RequestMapping("enterprise/sendMailByWeek.html")
public void sendMailByWeek(HttpServletRequest request,HttpServletResponse response ,String previousMonth,String startStr ,String endStr ,String id){
try {
response.setContentType("text/plain");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setCharacterEncoding("utf-8");
Map<String,Object> param = new HashMap<>();
param.put("id", id);
List<EnterpriseVo> entList = sendMessageService.queryAllEnterprise(param);
List<EnterpriseSwap> entSwapList = sendMessageService.queryEnterpriseSwapByWeek(startStr);
String Time = "week";
String msgTime = "(" + startStr + "至" + endStr + ")业户周考核统计";
boolean flag = false;
List<Map<String,Object>> result = sendMessageService.sendMail(entList,entSwapList,msgTime,Time,flag);
PrintWriter out = response.getWriter();
Object resultJSON = JSONObject.toJSON(result.get(0)); //根据需要拼装json
String jsonpCallback = request.getParameter("jsonpCallback");//客户端请求参数
out.println(jsonpCallback+"("+resultJSON+")");//返回jsonp格式数据
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}