js跨域请求数据


方式一。

    1. calljs.html 页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script type="text/javascript">
		function a(data){
			alert("===>"+data.name);
		}
	</script>
	<script src="http://localhost:8081/test/doCallBack.jsp?callback=a"></script>
</body>
</html>

注意:calljs.html和http://localhost:8081/test/doCallBack.jsp不在同一个域

     2.http://localhost:8081/test/doCallBack.jsp  的后台处理

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String func = request.getParameter("callback");
	String data = "{'name':'xxx'}";
	out.println(func+"("+ data +")");//这里应该是从<a target=_blank href="http://localhost:8081/test/doCallBack.jsp?callback=a">http://localhost:8081/test/doCallBack.jsp?callback=a</a>  获取的函数名 然后拼接这 a(参数) 种格式。
%>

这样就可以跨域请求数据了。。。。。。


方式二: 通过jquery

       1。jquerycalljs.html 页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
	$.getJSON("http://localhost:8081/test/doCallBack.jsp?callback=?",function(data){
		alert(data);
	}); //callback=? 这个?   jquery会自动生成一个值
</script>
</body>
</html>

       2.后台处理同上

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String func = request.getParameter("callback");
	String data = "{'name':'xxx'}";
	out.println(func+"("+ data +")");
%>


方式三: 通过jquery的ajax

1.js

$.ajax({
    type:"get",    //请求方式
    async:true,    //是否异步
    url:"http://localhost:8081/webdemo/servlet/test2",
    dataType:"jsonp",    //跨域json请求一定是jsonp
    jsonp: "callback",    //跨域请求的参数名,默认是callback
    data:{"query":"civilnews"},    //请求参数
    /*最后自动生成url:callback=随机生成
       http://localhost:8888/webdemo/servlet/test2?callback=1231235421543&query=civilnews&_=1508219299371
    */
    success: function(data) {
        //请求成功处理,和本地回调完全一样
        alert(data);
    }
});

或者

$.ajax({
    type:"get",    //请求方式
    async:true,    //是否异步
    url:"http://localhost:8081/webdemo/servlet/test2",
    dataType:"jsonp",    //跨域json请求一定是jsonp
    jsonp: "callback",    //跨域请求的参数名,默认是callback
    jsonpCallback: "callBackFun",    //回调返回名称,如果不设置jQuery随机生成,会回调这函数
    data:{"query":"civilnews"},    //请求参数
    /*最后自动生成url:不设置jsonpCallback,将随机生成
       http://localhost:8888/webdemo/servlet/test2?callback=callBackFun&query=civilnews&_=1508219299371
    */
    success: function(data) {
        //请求成功处理,和本地回调完全一样
        alert(data);
    }
});

function callBackFun(data){
    alert(data);
}

2.后台:

    《1》servlet

   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String callback = req.getParameter("callback");
        String data = "{'name':'xxxxxxxxx'}";
        //可同时支持json和jsonp
        if(callback == null || callback == ""){
            resp.getOutputStream().write(data.getBytes());
        }else{
            resp.getOutputStream().write((callback+"("+ data +")").getBytes());
        }
    }

     《2》springmvc的支持
 



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值