2013-03-15 15 views
8

次のコードがFFでは正常に動作していますが、IE9では動作しない理由がわかりません。jquery .get google apiに対して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 &センサー= false & = 1363342459585

私はcacを変更しようとしました彼は偽には、いくつかのアラートを入れてテストされた$ .getの代わりに$ .ajaxを使用しましたが、$ .get関数の中に入っていないようです。

MIMEタイプをそのまま変更しようとしましたここではhttp://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requestsを提案しましたが、それはeatherを助けませんでした。

EDIT: Googleからの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); 
    } 
}); 
+0

私はここに元のXMLスクリプト用のテストページを設定しています:http://www.abitnerdy.se/test/ firefoxではすべて正常に動作します。つまり、その中にチョークがあります。 –

答えて

6

cross-domain requestを実行しているため、ブラウザでこれをサポートする必要があります。最新のブラウザ(FFやChromeなど)ではサポートされていますが、IE9は特定の要件が満たされている場合にのみサポートしています。

Here's what Microsoft has to say about it(マイクロソフトのページに記載されているすべての要件を満たすことができます。を満たすことができます)。

+2

こんにちはRobert、私に正しい方向を教えていただきありがとうございます。 Googleのために何を知って、私はこれを見つけたhttp://stackoverflow.com/questions/11487216/cors-with-jquery-and-xdomainrequest-in-ie8-9私の問題を解決するのを助けたツールに私を指摘した。こちらからダウンロードできます:https://github.com/Ovea/cors/blob/master/src/main/resources/com/ovea/cors/jquery.ie.cors.js –

+0

あなたの問題を解決して嬉しいです: ) – robertklep

1

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

チェッククロスドメインのために、ここで参照:ブールPARAM:http://api.jquery.com/jQuery.ajax/

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

編集

jQueryのソースをチェックした後、XDomainRequestの言及(ちなみにIE8/9サポートCORS)がありませんようですので、私はそれが動作するかわかりません。それ以外の場合、本当にそれらをサポートしたい場合は、browser == ie9またはie8の場合はXDomainRequestを使って$ .ajaxのラッパーを作成します。

関連する問題