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