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

问题描述

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

时间: 2024-10-03 21:18:28

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

jquery异步跨域访问代码

下面是关于jquery异步跨域访问的简单实例,需要的朋友可以参考一下   复制代码 代码如下: /* $.ajax({ url : url, type : 'POST', data : { CorpID : CorpID, Pwd : Pwd, Mobile : Mobile, Content : Content, Cell : '', SendTime : '' }, async : true,//异步 dataType : 'text',//'text','jsonp' success :

jquery ajax 跨域访问问题

问题描述 jquery ajax 跨域访问问题 客户端静态页面中使用jquery的ajax,访问同一个局域网内的服务器IIS部署的服务webservice. 访问失败,好像是跨域的问题.但是使用jsonp也有问题,jsonp只能GET,传递的参数长度收限制. 这种情况怎么解决,哪位大侠SOS

jquery ajax跨域访问怎么修改header中的referer的值

问题描述 jqueryajax跨域访问怎么修改header中的referer的值:$.ajax({type:"get",url:"http://api.sceea.cn/Handler/GetSpcjkHandler.ashx",data:data,dataType:'jsonp',jsonp:'jsoncallback',beforeSend:function(xhr){//beforeSend定义全局变量xhr.setRequestHeader("Re

REST API之前端跨域访问

1.新建并运行一个 NodeJS的server,端口为:3000.暴露一个API, URL为http://localhost:3000/users/.以下为该API的实现: users.js var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/', function(req, res) { res.send('respond with a re

jquery ajax跨域访问的问题

问题描述 <!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 http-equiv="Conten

jquery plugins-ajax跨域访问,实现数据表格显示

问题描述 ajax跨域访问,实现数据表格显示 ajax实现跨域访问,返回数据为json,请问怎么实现,并将返回数据用table循环显示 解决方案 使用jsonp解决跨域问题,getJSON中url里面带上&callback=?至于table循环是js控制循环遍历 解决方案二: 我是这么写的 $.getJSON("http://llms.cobweb.net.cn:8888/js/services/instore!down.action?orgcode=320101002&form

JQuery Ajax 跨域访问的解决方案_jquery

具体情况有: 一.本域和子域的相互访问: http://www.aa.com/和book.aa.com 二.本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 iframe 三.本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 XMLHttpRequest访问代理 四.本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 JS创建动态脚

jquery异步跨域访问代码_jquery

复制代码 代码如下: /*     $.ajax({         url : url,         type : 'POST',         data : {             CorpID : CorpID,             Pwd : Pwd,             Mobile : Mobile,             Content : Content,             Cell : '',             SendTime : ''    

jQuery 跨域访问解决原理案例详解_jquery

浏览器端跨域访问一直是个问题,多数研发人员对待js的态度都是好了伤疤忘了疼,所以病发的时候,时不时地都要疼上一疼.记得很久以前使用iframe 加script domain 声明.yahoo js util 的方式解决二级域名跨域访问的问题. 时间过得好快,又被拉回js战场时, 跨域问题这个伤疤又开疼了.好在,有jQuery帮忙,跨域问题似乎没那么难缠了.这次也借此机会对跨域问题来给刨根问底,结合实际的开发项目,查阅了相关资料,算是解决了跨域问题...有必要记下来备忘, 跨域的安全限制都是指浏览