ajax跨域请求的三种方式(js+java)

来源:互联网 发布:java在线客服系统源码 编辑:程序博客网 时间:2024/05/11 19:22

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)

// 出处地址 http://www.cnblogs.com/bigbearbb/p/4274470.html
// 需要设置后端请求放行
//response.setHeader(“Access-Control-Allow-Origin”,”*”);
//response.setHeader(“Access-Control-Allow-Methods”,”GET,POST”);
//此对象相较于 level 1 版本的 增强
/* 1 可以获取服务器端的二进制数据。
2 可以友好的提交表单数据
3 可以上传文件(内置控制上传进度事件逻辑)
4 使用HTML表单来初始化一个FormData对象 */

4 : ajax jsonp 增强插件
https://github.com/congmo/jquery-jsonp

0 0
原创粉丝点击