8

次のコードがFFで完全に機能しているのに、IE9では機能していない理由がわかりません。

スクリプトは、ボタンをクリックすると、フォームから通り、郵便番号、町などの値を選択し、文字列を作成してgoogleに送信し、その住所の緯度と経度を返します(そして、それを2つに変換します)。フォームのフィールド)

$("#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に変更してみましたが、アラートを入力して$.getの代わりに$.ajaxを使用しましたが、$。get関数の中に入ることができないようです。

http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requestsで提案されているように、MIMEタイプを変更しようとしましたが、それはうまくいきませんでした。

誰かアイデアはありますか?

編集:問題がXMLにあるかどうかを確認するために、Googleのjson結果を試してみましたが、それも機能しません。

$.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);
    }
});
4

2 に答える 2

1

$.ajax パラメータで crossDomain を true に設定しようとしましたか?

crossDomain:bool パラメータについては、こちらのリファレンスを確認してください: http://api.jquery.com/jQuery.ajax/

ブラウザ間でシームレスに動作するはずです。

編集

jQuery のソースを確認したところ、XDomainRequest (ie8/9 が CORS をサポートする方法) について言及されていないようなので、うまくいくかどうかわかりません。それ以外の場合、本当にそれらをサポートしたい場合は、ブラウザ == ie9 または ie8 の場合、XDomainRequest を使用して $.ajax のラッパーを作成してください。

于 2013-03-23T17:40:32.850 に答える