准备:
自己先建立一个最普通的web项目,也不使用什么框架了,直接怼一个HttpServlet,代码如下
public class JsonpServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// jsonp请求的回调方法名字默认为callback,发起请求时会自动拼接在URL中,所以这里可以获取,也可以不用获取
// 如果需要指定不同的方法名,需在ajax的参数jsonp: "你的方法名" 中进行设置,
// 并且 String method = request.getParameter("你的方法名");,否则使用callback默认名称
String method = request.getParameter("callback");
String name = request.getParameter("name");
out.print(method+ "( [{ name:\"tanglei\"},{ name:\"xiaoming\"},{ name:\""+name+"\"}] )" );
out.flush();
out.close();
}
}
接下来,自己随意搞一个html,在其中加上script
<script type="text/javascript">
// 自己触发这个function,发起跨域请求
function jsonpTest(){
$.ajax({
url:"http://localhost:8080/testJsonp/servlet/JsonpServlet?name=xxx",
type: "GET",
dataType: "jsonp",
//jsonp: "callback2",
jsonpCallback:"callback", // 这里的回调方法名一定要和java代码中接收的method名字相同,
// 并且自己要声明一个function callback()用于处理返回的数据
//contentType:"application/json",
success:function(param){//回调函数
//成功之后去调用回调函数function callback(data)
callback(param);
}
});
}
//回调函数
function callback(data) {
//具体的数据处理.自己可以研究一下
//数据是一个数组格式callback( [{ name:\"tt\"},{ name:\"xiaoming\"},{ name:\"xxx\"}] )
alert(data[1].name);
//数据是一个json格式callback( { name:\"tt\"} )
//alert(data.name);
}
</script>
准备工作完毕,可以触发调用function
测试截图
请求:
响应:
结果:
java结合jQuery的ajax发起跨域请求的Demo就是这样了,具体的参数信息可以去jQuery API查看,具体的问题还得具体再分析,希望帮到大家!