------------------------------------------
什么是Jsoup:
跨项目请求数据的时候,ajax不支持跨域请求,但是javascript支持,使用jsoup从跨域服务端返回json数据
例子1:服务端A从服务端B获取数据
1. 在项目1申明函数:
var getData = function(data){
alert(data.name+","+data.address);
};
2. 在项目2中创建r1.js,调用函数,
getData({"username":"老张","password":"123"});
3. 在项目1中引入项目2的js:
<script type="text/javascript" src="http://127.0.0.1:8080/jsonp02/r1.js"></script>
那么这里项目2的getData({}) 函数引入,相当于调用了getData函数,只能可以获取项目2中返回的值
例子2: 请求servlet
1. 项目1:
var getData = function(data){
alert(data.name+","+data.password);
};
申明函数
2. <script type="text/javascript" src="http://localhost:8080/MyJsoup2/MyJsoupServlet?id=1&jsonpCallback=getData"></script>
请求servlet把请求参数名带过去,并且要把函数名做为参数传递过去
3. 项目2:servlet中获取参数并且返回
int id = Integer.parseInt(request.getParameter("id")); //获取服务A请求参数
String json = "{\"id\":\""+id+"\",\"name\":\""+"小明"+"\",\"address\":\""+"湖南郴州"+"\"}";
String jsonp = request.getParameter("jsonpCallback")+"("+json+")"; //获取的函数名,根据函数名返回json数据
response.setContentType("text/plain;charset=utf-8");
response.getWriter().println(jsonp); //
例子3. 实际应用中,jquery对这种技术有封装,这样的话就不用传递函数名,不用申明函数
项目1写法:
$(function(){
$.getJSON("http://localhost:8080/MyJsoup2/MyJsoupServlet?jsonpCallback=?",{id:3},function(data){
alert(data.id+","+data.name+","+data.address);
});
});
固定写法,项目2不变
------------------------------------------------------
什么是Jsoup:
跨项目请求数据的时候,ajax不支持跨域请求,但是javascript支持,使用jsoup从跨域服务端返回json数据
例子1:服务端A从服务端B获取数据
1. 在项目1申明函数:
var getData = function(data){
alert(data.name+","+data.address);
};
2. 在项目2中创建r1.js,调用函数,
getData({"username":"老张","password":"123"});
3. 在项目1中引入项目2的js:
<script type="text/javascript" src="http://127.0.0.1:8080/jsonp02/r1.js"></script>
那么这里项目2的getData({}) 函数引入,相当于调用了getData函数,只能可以获取项目2中返回的值
例子2: 请求servlet
1. 项目1:
var getData = function(data){
alert(data.name+","+data.password);
};
申明函数
2. <script type="text/javascript" src="http://localhost:8080/MyJsoup2/MyJsoupServlet?id=1&jsonpCallback=getData"></script>
请求servlet把请求参数名带过去,并且要把函数名做为参数传递过去
3. 项目2:servlet中获取参数并且返回
int id = Integer.parseInt(request.getParameter("id")); //获取服务A请求参数
String json = "{\"id\":\""+id+"\",\"name\":\""+"小明"+"\",\"address\":\""+"湖南郴州"+"\"}";
String jsonp = request.getParameter("jsonpCallback")+"("+json+")"; //获取的函数名,根据函数名返回json数据
response.setContentType("text/plain;charset=utf-8");
response.getWriter().println(jsonp); //
例子3. 实际应用中,jquery对这种技术有封装,这样的话就不用传递函数名,不用申明函数
项目1写法:
$(function(){
$.getJSON("http://localhost:8080/MyJsoup2/MyJsoupServlet?jsonpCallback=?",{id:3},function(data){
alert(data.id+","+data.name+","+data.address);
});
});
固定写法,项目2不变
------------------------------------------------------