js中跨域访问

一、使用jsonp

       ajax本身是不可以跨域的,通过产生一个script标签来实现跨域。因为script标签的src属性是没有跨域的限制的。其实设置了dataType: 'jsonp'后,$.ajax方法就和ajax XmlHttpRequest没什么关系了,取而代之的则是JSONP协议。JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。.

      Jquery中ajax的核心是通过 XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的 js脚本。因为jsonp 跨域的原理就是用的动态加载<script>的src ,所以我们只能把参数通过url的方式传递,所以jsonp的 type类型只能是get !

代码:js

 $.ajax({
         type : "get", //jquey是不支持post方式跨域的
         async:false,
         url : "http://*************", //跨域请求的URL
         dataType : "jsonp",
         data:{licenceNum:xkzh},
         jsonp: "callBack", // 指定回调函数名,与服务器端接收的一致,并回传回来
         success : function(data){ 
			var errcode = data.errcode;
			console.log(errcode);
         } 
     });  

代码:java

	public void  jsonpGetMsg(HttpServletResponse response,HttpServletRequest request){
		
		String callBack = request.getParameter("callBack");//和前端回调函数名一直
		String data = "{\"name\":\"湖南省\",\"regionId\":134}";//json对象
		String backFunction = callBack+"("+data+")";
		PrintWriter out=null;
		try {
			 out = response.getWriter();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		out.write(backFunction);
		out.close();
	}

参考文章

1、https://www.cnblogs.com/hurry-up/p/7156650.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值