Jquery .get不能在ie9中与Google api对抗



我不明白为什么下面的代码在FF中工作得很好,但在IE9中却不行。

脚本所做的是,当点击按钮时,它从表单中选择一些值,如街道,邮政编码和城镇,构建一个字符串,提交给google,并返回该地址的长度和长度(并将其放入表单中的两个字段中)

$("#google_coordinates").live("click", function(){
    var string = encodeURIComponent($('#sAddressStreet1').val())+",";
    if($('#sAddressStreet2').val() != ""){
        string += encodeURIComponent($('#sAddressStreet2').val())+",";
    }
    string += encodeURIComponent($('#sAddressPostalcode').val())+",";
    string += encodeURIComponent($('#sAddressTown').val())+",";
    string += encodeURIComponent($('#sAddressCountryCode option:selected').text());
/* test with an alert - string shows fine in both FF and IE */    
    alert(string);
    $.get("http://maps.googleapis.com/maps/api/geocode/xml?address="+string+"&sensor=false", function(xml){
       $(xml).find('location').each(function() {
           lat = $(this).find('lat').text();
           lng = $(this).find('lng').text();
/* test with an alert - fine in FF not in IE */    
alert(lat + ',' + lng);
               $("#sAddressLatitude").val(lat);
           $("#sAddressLongitude").val(lng);
       });
    });
    return false;
});

这个脚本在这个例子中提交的url是:=1363342459585">http://maps.googleapis.com/maps/api/geocode/xml?address=Servicev%C3%A4gen%207,311%2033,Falkenberg,Sweden&sensor=false&=1363342459585

我已经尝试将缓存更改为false,使用$。Ajax代替$。通过放入一些警报进行测试,但我似乎无法进入$。得到函数

我已经尝试改变MIME类型,建议在这里http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests,但这没有帮助。

有什么想法吗?

编辑:甚至尝试从谷歌json结果,看看问题是否在于XML,但这也不起作用。

$.ajax({
    type: "GET",
    url: "http://maps.googleapis.com/maps/api/geocode/json?address="+string+"&sensor=false",
    dataType: "json",
    cache: false,
    success: function(json){
        alert("hiero");
        lat = json.results[0].geometry.location.lat;
        lng = json.results[0].geometry.location.lng;
        $("#sAddressLatitude").val(lat);
        $("#sAddressLongitude").val(lng);
    }
});

因为要执行跨域请求,所以浏览器需要支持这一点。大多数现代浏览器(如FF和Chrome)都支持它,但IE9只在满足特定要求时才支持它。

以下是微软对此的说法,包括一些如何使其工作的指针(如果微软页面上提到的所有要求都可以满足)。

您是否尝试在$。ajax参数?

查看此处的crossDomain参考:bool参数:http://api.jquery.com/jQuery.ajax/

它应该在浏览器之间无缝工作。

编辑

检查jQuery的源代码后,似乎没有提到XDomainRequest (ie8/9支持CORS的方式),所以我不确定它是否有效。否则,如果您真的想支持这些,可以在$周围创建一个包装器。如果浏览器== ie9或ie8.

相关内容

  • 没有找到相关文章

最新更新