ajax跨域问题解决

来源:互联网 发布:程序员开发软件 编辑:程序博客网 时间:2024/06/07 17:43

我们在用ajax的时候有时候遇到跨域的问题

1.下面是我写的一个例子

   $.ajax({   url:"http://127.0.0.1:8080/occs/user/login?username=121&password=121",   type:"get",   dataType:"jsonp",   success:function(data){   alert(data.msg);   }   })
dataType设置为jsonp类型

请求方式只能用get,需要接受返回参数的时候,需要在方法中添加一个callback参数

如:

    @RequestMapping("/login")    @ResponseBody    public String login(String callback,String username,String password) {        JSONObject json=new JSONObject();        System.out.println(username+","+password);        json.put("msg", "msg");        String json1 =callback+ "("+ JSONObject.toJSONString(json)+")";        return json1;    }

其中callback是ajax给我附加的参数,我们只需要接受即可。另外返回的数据的时候我们需要把callback拼接到我们要返回的数据中,如果想要返回json数据

需要把json转换成字符串在拼接,在页面上就可以用data.msg来获取我们返回的数据。


2.第二种方式 设置头部信息

js中正常写ajax  

如:

   function login(){   $.ajax({   url:"http://127.0.0.1:8080/occs/user/login?",   type:"post",   data:{"username":"123","password":"11221"},   dataType:"json",   success:function(data){   alert(data.msg);   }   })      }
在方法中

   @RequestMapping("/login")    @ResponseBody    public JSONObject login(String username,String password,HttpServletResponse response) {
     // 设置头部消息,就能接收请求了       response.setHeader("Access-Control-Allow-Origin", "*");        JSONObject json=new JSONObject();        System.out.println(username+","+password);        json.put("msg", "msg");      /*  String json1 =callback+ "("+ JSONObject.toJSONString(json)+")";*/        return json;    }

这种方法相对简单一些,返回数据类型也不受限制而且请求方式也可以是post


0 0