1 : 采用jsonp (只支持get请求,后端返回的jsonp格式json,后端无需做请求放行操作)
/* $.ajax({
type: "GET", // 此处只能是get请求 post请求后端即使修改(method = RequestMethod.POST)了也不行
async: false,
url: "http:localhost:8080/APmanager-webapp/api/simCard/table?id=1&serial=123",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback:"flightHandler",
success: function(json){
alert('您查询到航班信息:票价: ' + json[0] + ' 元,余票: ' + json[1] + ' 张。');
},
error: function(){
alert('fail');
}
}); */
// Java 后端
/* @RequestMapping(value = { "/simCard/table" }, produces = "application/json; charset=UTF-8",method = RequestMethod.GET)
@ResponseBody //flightHandler
public String save1(@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "serial", required = false) String serial,
HttpServletRequest request, HttpServletResponse response) {
JSONObject resultObj = new JSONObject();
JSONArray arr = new JSONArray();
arr.add("a");
arr.add("b");
arr.add("c");
System.out.println(id);
System.out.println(serial);
return "flightHandler(" + arr.toString() + ")";
} */
2 : 采用原始ajax (后端需要拦截请求 设置指定路由放行)
// Java后端代码必须设置response.setHeader("Access-Control-Allow-Origin","*");
//response.setHeader("Access-Control-Allow-Methods","GET,POST"); 请求放行
/* $.ajax({
type: "POST", // get post 方法都是一样的
async: false,
url: "http:localhost:8080/APmanager-webapp/api/simCard/table?id=1&serial=123",
dataType: "json",
success: function(json){
alert("success");
alert('票价: ' + json['flightHandler'][0] + ' 元,余票: ' + json['flightHandler'][1] + ' 张。');
},
error: function(){
alert('fail');
}
}); */
// Java 后端
/* @RequestMapping(value = { "/simCard/table" }, produces = "application/json; charset=UTF-8",method = RequestMethod.GET)
@ResponseBody //flightHandler
public String save1(@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "serial", required = false) String serial,
HttpServletRequest request, HttpServletResponse response) {
// 一般在请求拦截器中设置
response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Methods","GET,POST"); //请求放行
JSONObject resultObj = new JSONObject();
JSONArray arr = new JSONArray();
arr.add("a");
arr.add("b");
arr.add("c");
resultObj.put("flightHandler", arr);
System.out.println(id);
System.out.println(serial);
return resultObj.toString();
} */
3 : XHR2(XMLHttpRequest Level 2)
// 需要设置后端请求放行
//response.setHeader(“Access-Control-Allow-Origin”,”*”);
//response.setHeader(“Access-Control-Allow-Methods”,”GET,POST”);
或者使用spring注解也可以支持跨域 @CrossOrigin(origins = "*",methods= {RequestMethod.GET,RequestMethod.POST})
//此对象相较于 level 1 版本的 增强
/* 1 可以获取服务器端的二进制数据。
2 可以友好的提交表单数据
3 可以上传文件(内置控制上传进度事件逻辑)
4 使用HTML表单来初始化一个FormData对象 */
4 : ajax jsonp 增强插件
https://github.com/congmo/jquery-jsonp