ajax跨域报错

6 篇文章 0 订阅

在项目中使用ajax访问百度地图的api时,报

post request is No 'Access-Control-Allow-Origin' header is present on the requested resource.' 

为什么会出这样的错误呢?这是因为所有支持Javascript的浏览器都会使用同源策略这个安全策略。看看百度的解释:

  同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。

  这就是引起为何取不到数据的原因了,那如何才能解决跨域的问题呢?

这里就使用到了jsonp

具体实现

//获取用户当前坐标
function findUserLocation(){
	var resUrl = "http://api.map.baidu.com/location/ip?ak=dKkDYZr7Mprkruw9BTlIw9d8&coor=bd09ll";
	$.ajax({
        type : "get", //jquey是不支持post方式跨域的
        async:false,
        url : resUrl, //跨域请求的URL
        dataType : "jsonp",
        //传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback)
        jsonp: "callback",
		beforeSend :function(msg){
			$("#showmsg").html("正在查询您的绑定信息……");
		},
        //成功获取跨域服务器上的json数据后,会动态执行这个callback函数
        success : function(msg){ 
            var jsonObj = eval(msg);
			if(0 == jsonObj.status){
				var contentJson = eval(jsonObj.content);
				var pointJson = eval(contentJson.point);
				$("#userLat").val(pointJson.y);
				$("#userLng").val(pointJson.x);
				//提交表单
				$("#subform").attr("action","/uxunwxweb/base/gotopage.do?gotolink=ATMMap");
				$("#subform").submit();
			}else{
				$("#showmsg").html("请求坐标出错,当前状态码为"+jsonObj.status);
			}
        }
    });
	
}

 这样既可正确获取到百度返回的参数了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值