ajax跨域问题解决

我们在用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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值