2 baidu 33614238 baidu_33614238 于 2016.02.28 19:36 提问

JQuery可以跨域访问,但是回调函数却无法成功,具体目的:百度地图API地址查坐标

我要用百度地图API的一个功能,
要用的技术是JavaScript,
百度API文档链接是百度地图根据地址查询经纬度
我选取测试的具体API为http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation
浏览器直接打进去的效果图是图片说明

最后JS调试效果图是图片说明
当时返回的数据是data = Object {readyState: 4, status: 200, statusText: "success"}
这说明跨域访问是可以的,但是回调方法总是走到error块,我预期是走到success块,找不到原因,我更怀疑是百度的问题,大家懂得帮忙看看问题在哪里,我最终是有几十个地址需要查询出经纬度,然后自动标注到地图上,后边都调试好了,就缺经纬度自动获取了,不希望换技术实现,毕竟都搞差不多了

我用的HTML代码是,改好JQuery路径就可以可以自己黏贴测试,可以运行,

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>百度地图API显示多个标注点带提示的代码</title>
<script src="scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
</head>
<body>
    <div class="demo_main">
        <fieldset class="demo_title">百度地图API显示多个标注点带提示的代码</fieldset>
        <fieldset class="demo_content">
            <div style="min-height: 300px; width: 100%;" id="map"></div>
            <script type="text/javascript">
                $(function() {
                    $.ajax({
                        "async" : "false",
                        "url" : "http://api.map.baidu.com/geocoder/v2/",
                        "type" : "GET",
                        "dataType" : "jsonp",
                        "jsonpCallback" : "showLocation",
                        "timeout" : "5000",
                        "contentType" : "application/json;utf-8",
                        "data" : null,
                        "data" : {
                            "address":"北京市海淀区上地十街10号",
                            "output":"json",
                            "ak":"E4805d16520de693a3fe707cdc962045",
                            "callback":"showLocation"
                        },
                        "success" : function(data) {
                            alert(data);
                        },
                        "error" : function(data) {
                            alert(data);
                        }
                    });
                });
            </script>
        </fieldset>
    </div>
</body>
</html>

5个回答

showbo
showbo   Ds   Rxr 2016.02.29 10:21

接口返回的就不是jsonp数据,jsonp数据其实就是js代码,只是附加了数据而已。你指定j强制执行sonp也没用,接收不到数据,可以用yql将跨域的非jsonp数据转为jsonp的

JSONP跨域访问在线代理API

rui888
rui888   Ds   Rxr 2016.02.29 08:51

"dataType" : "jsonp", 这个代表会生成对应js 方法,但是你的http://api.map.baidu.com/geocoder/v2/ 不是有效的jsonp 的形式。

参考http://blog.csdn.net/caomiao2006/article/details/46868983
必须是jsonpcallback({"Email":"zhww@outlook.com","Remark":"我来自遥远的东方"})

这样的 jsonpcallback
WinsenJiansbomber
WinsenJiansbomber   2016.03.02 09:31

请求的数据返回后就通过BaiduMAP API生成对应的热点,百度地图文档都有了,RTFD(Read the fucking documention

baidu_33614238
baidu_33614238   2016.03.04 05:33

不好意思各位,回复晚了,多谢楼上各位的回答,百度提供的那个jsonp API他们文档中声称返回数据格式是jsonp,这么坑爹的api,我严重怀疑是他们写错了,二楼童鞋的jsonp格式jsonpcallback({"Email":"zhww@outlook.com","Remark":"我来自遥远的东方"}),大家普遍接受的写法,而百度的jsonp格式里那个函数名称都很奇葩,硬要写成showLocation&&showLocation(........)的格式,有能力有时间的高手可以继续研究下是不是百度自己写错了,兄弟我没时间继续当小白鼠研究这api了,我暂时用另一个API做了http://developer.baidu.com/map/jsdemo.htm#i7_3
图片说明

mr_qiao_
mr_qiao_   2016.12.17 16:49

楼主大牛,初学百度地图api要注意哪些,公司最近要做一个地图实时定位的那种,怎么解决呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!