当前位置: 首页 > 面试题库 >

jQuery和Google Maps JSON响应

漆雕修德
2023-03-14
问题内容

我在从Google Maps API获取地理位置信息时遇到麻烦

代码很简单

$.ajax({
    type: "GET",
    cache: false,
    url: "http://maps.googleapis.com/maps/api/geocode/json",
    dataType: "jsonp",
    data: {
        address: "Ljubljana " + "Slovenia",
        sensor: "false"
    },
    jsonpCallback:'json_response',
    success: function(data) {
        top.console.debug(data);
        $('#location_setter').dialog('close');
    },
    error: function() {
        alert("Error.");
    }
});


function json_response(data){
    alert("works");
}

我总是回来一个错误。我也直接尝试过(我读过某个地方应该在最后设置回调…

$.ajax({
    type: "GET",
    cache: true,
    url: "http://maps.googleapis.com/maps/api/geocode/json?address=Ljubljana Slovenia&sensor=false",
    dataType: "jsonp",
    jsonpCallback:'json_response',
    success: function(data) {
        top.console.debug(data);
        $('#location_setter').dialog('close');
    },
    error: function() {
        alert("Error.");
    }
});

请求网址格式正确:

http://maps.googleapis.com/maps/api/geocode/json?address=Ljubljana%20Slovenia&sensor=false&callback=json_response

它给了我正确的json

请指教!

您可以在http://jsfiddle.net/PNad9/上
“玩”


问题答案:

如果它对某人有帮助…我放弃了,我完全改变了逻辑本身,现在它可以按预期工作:

首先,我将google maps js附加到正文中

var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = 'http://maps.google.com/maps/api/js?sensor=false&callback=get_longlat';
$("body").append( script );

如您所见,我指定了回调函数get_longlat …

所以我定义了这个功能并使用了谷歌的地理编码对象

function get_longlat(address){

    var geocoder = new google.maps.Geocoder();

    if(!address){
        var p = US.get("location_postal");
        var c = US.get("location_city");
        var a = US.get("location_address");
        var address = a + ', ' + p + ' ' + c + ', Slovenia';
    }

    if (geocoder) {
        geocoder.geocode({ 'address': address }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                US.set("location_lat", results[0].geometry.location.lat(), 60);
                US.set("location_lon", results[0].geometry.location.lng(), 60);

                $('#location_setter').dialog('close');
            } 
            else {
                console.log('No results found: ' + status);
            }
        });
    }
}

里面的US变量是用户设置的我们自己的名称空间

希望对别人有帮助



 类似资料:
  • 问题内容: 我有一个页面,使用被称为100次(async:true)的jQuery.ajax,问题是,当它们都被加载时,我需要系统等待所有100次调用返回后才能继续。我将如何处理? 提前致谢!:) 更新: 这些调用在for()循环中进行(其中有100个:) 问题答案: 最好的方法是使用。您可以按以下方式使用它: 另外,如果您在数组中拥有所有AJAX调用,则可以使用: 请注意,这至少需要jQuery

  • 问题内容: 我使用以下函数通过jQuery AJAX发布表单: 它发布正常,但我无法解析响应,它记录到控制台,如下所示 我相信这是我正在寻找的回应。 但是,当我尝试执行响应对象的任何其他成员时,它就是。 任何建议表示赞赏。 问题答案: 呼唤 应该可以访问所需的数据。 现在应该显示“ 1”

  • 问题内容: 我在弄清楚如何从jQuery $ .post()请求中正确读取JSON响应时遇到了麻烦。 在下面的jQuery代码中,我根据对应的“ color_entry_id”(用作键)从DOM中的元素填充字符串的关联数组: 然后,我发出POST请求,发送“ image_links”数组: 另外,如上所示,我尝试遍历响应数组并输出要成为字符串的每个项目,但是我只得到“ [object Object

  • 问题内容: 我有以下代码对URL进行GET请求: 但是返回的结果并不总是能反映出来。例如,我对响应进行了更改,吐出了堆栈跟踪,但是当我单击搜索按钮时,堆栈跟踪没有出现。我查看了控制ajax响应的基础PHP代码,它具有正确的代码,直接访问页面显示了正确的结果,但.load返回的输出是旧的。 如果我关闭浏览器并重新打开它,它将运行一次,然后开始返回陈旧的信息。我可以通过jQuery控制它,还是需要PH

  • 问题内容: 好的,这真的让我感到沮丧,因为我已经做过一百次了,但是这次却没有用。所以我知道我做错了,我只是想不通。 我正在使用jQuery .get例程从另一个文件加载html。我不想使用.load(),因为它总是替换我要将内容加载到其中的元素的子元素。 这是我的.get请求: 文件’info.html’是具有正确doctype的标准xhtml文件,并且体内唯一的一件事是我需要访问的一系列ul。由

  • 问题内容: 甚至不确定这是否是标题问题的正确方法。我知道我把AJAX调用弄错了…这是我现在正在做的事情(顺便说一下,我正在使用ASP.NET MVC后端): 我通常将一些数据发布到操作中,该操作将加载我在响应中捕获的视图。它基本上是为操作提供一些数据,并取回一些HTML。 假设我想创建一个经过验证的Ajax调用。如何获得有关错误的验证消息?例如,一个Ajax登录表单。如果无法验证用户,我想告诉他们