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>

"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

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

JSONP跨域访问在线代理API

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

不好意思各位,回复晚了,多谢楼上各位的回答,百度提供的那个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
图片说明

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