电脑
intellij IDEA或者eclipse
第一种:创建一个springboot的项目(也可以创建一个简答的java项目)。1、 打开创建页面 选择File-new-project..2、选择创建的项目为spring initializr 进入springboot项目创建步骤(也可以选择类型java,创建一个普通java项目)3、输入项目名字,选择依赖web(根据项目需求选择,此次需要),选择存放目录-完成(Finish)
第一步:编写一个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;@RestControllerpublic 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; }}
第二步:编写前端页面请求。1、注意需要引入jquery2、callback=?一定要传,后台解析3、dataType的类型一定注意在特殊的情况下定义为“json” 也是可以的 不过一般为:dataType: 'jsonp',
第三步:测试。1、启动被调用服务,并测试2、启动调用服务,打开需要调用的页面如下如下所示:
第一步:还可以使用jquery插件jquery.jsonp.js实现跨域下载地址:https://github.com/congmo/jquery-jsonp/tree/master/srcfunction 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) } }); }
第二步:$.getJSON实现跨域$.getJSON('http://localhost:8080/bean?callback=?', {id:2,name:'李四',sex:'男'}, function(data) { alert(data.id+data.name+data.sex); });
第三步:总结。实际上我们在参数中传输callback参数与,jquery就认为你在发送跨域请求,此时你不定义dataType: 'jsonp',请求仍然没有问题。
jdk 1.8