ajax跨域解决方法
1、第一种:创建一个springboot的项目(也可以创建一个简答的java项目)。
1、 打开创建页面 选择File-new-project..
2、选择创建的项目为spring initializr 进入springboot项目创建步骤(也可以选择类型java,创建一个普通java项目)
3、输入项目名字,选择依赖web(根据项目需求选择,此次需要),选择存放目录-完成(Finish)





2、第二种:创建一个简单的javaweb项目。
1、直接打开:https://jingyan.baidu.com/article/ff411625048acf12e482373a.html
2、或者百度搜索:servlet类如何映射到url路径 百度经验

1、第一步:编写一个controller。
关键点是需要获取前端的callback参数并返回,包裹需要解析的json数据。
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
@RestController
public class TestController {
@RequestMapping("/bean")
public String testJson(HttpServletRequest request,
HttpServletResponse response, Map paramMap) {
String callback = request.getParameter("callback");
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String json = callback + "(" + "{'id':" + id + ",'name':'" + name
+ "','sex':'" + sex + "'}" + ")";
return json;
}
}

2、第二步:编写前端页面请求。
1、注意需要引入jquery
2、callback=?一定要传,后台解析
3、dataType的类型一定注意在特殊的情况下定义为“json” 也是可以的
不过一般为:dataType: 'jsonp',
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<script>
//ajax跨域请求
function getAjax() {
//基于jQuery的跨域请求
$.ajax({
//设置请求类型
type:"get",
//请求超时时间
timeout:5000,
//设置请求地址
url: 'http://localhost:8080/bean?callback=?',
//设置需要发送的数据
data: {id:2,name:'李四',sex:'男'},
//定义此请求为跨域请求
dataType: 'jsonp',
success: function (data) {
console.log(data.id+data.name+data.sex);
},
error: function (data) {
console.log(data)
}
})
}
//发送请求
getAjax();
</script>
</body>
</html>

3、第三步:测试。
1、启动被调用服务,并测试
2、启动调用服务,打开需要调用的页面如下如下所示:


1、第一步:还可以使用jquery插件jquery.jsonp.js实现跨域
下载地址:https://github.com/congmo/jquery-jsonp/tree/master/src
function jsontest(){
//下载引入引入jquery.jsonp.js
//https://github.com/congmo/jquery-jsonp/tree/master/src
$.jsonp({
url: 'http://localhost:8080/bean?callback=?',
"success": function(data) {
console.log(data.id+data.name+data.sex);
},
"error": function(d,msg) {
console.log(data)
}
});
}

2、第二步:$.getJSON实现跨域
$.getJSON("http://localhost:8080/bean?callback=?", {id:2,name:'李四',sex:'男'},
function(data) {
alert(data.id+data.name+data.sex);
});

3、第三步:总结。
实际上我们在参数中传输callback参数与,jquery就认为你在发送跨域请求,此时你不定义dataType: 'jsonp',请求仍然没有问题。