2012-10-23 47 views
0

驚喜,驚喜......我的代碼在Chrome和FF中完美運行,但在IE中卻不能運行。以下代碼正在執行跨域JSON請求。如果JSON結果的長度大於1,則假設用單選按鈕顯示所有結果。否則,它將返回單個地址並轉到重定向。在IE中,它總是用單選按鈕顯示結果,就像它總是大於1.我在這裏做錯了什麼?感謝您的幫助。

var url="http://clvplaces.appspot.com/maptools/rest/services/geocode?address="; 
var address = someStreetNumber + " " + someStreetName; 
var city = ", Las Vegas, NV"; 
var score = "&score=50"; 
var jsonCB = "&format=json&jsonCallback=?"; 

$.getJSON(url+address+city+score+jsonCB, function(results){ 
    if(results.response.length > 1) { 
     $.each(results.response, function(i, item) { 
      showAddresses(item) 
     }); 
    } 
    else { 
     var busAdd = results.response[0].streetno + " " + results.response[0].streetname; 
     busAdd += ", " + results.response[0].city + ", " + results.response[0].zip; 
      var latLong = results.response[0].latlng; 
     getJurisdiction(latLong, address); 
     } 
}); 

我讀過IE中的$ .getJSON有緩存結果的傾向,所以用$ .ajax代替。所以,我將$ .getJSON塊取消爲:

$.ajax({ 
    url: url+address+city+score+jsonCB, 
    cache: false, 
    dataType: "json", 
    success: function(results) { 
    // same if - else statements here 
}}); 

這種更改完全沒有解決問題。此外,做任何這個服務器端不是我的選擇...不幸的是。

編輯/更新:

一次返回的結果如下所示。 IE瀏覽器總是顯示單個或從我的IF語句繁殖的結果,而Chrome和FF,因爲他們應該會顯示來自ELSE語句一個結果:

?({ 
    errormsg: '', 
    response: [ 
     { 
      latlng:'36.167352999999999,-115.148408', 
      score:'50', 
      streetno:'495', 
      streetname:'S Main St', 
      city:'Las Vegas', 
      state:'NV', 
      zip:'89101' 
     }, 
    ] 
}) 
+2

您可以通過console.log(results.response)來查看IE和Firefox之間的區別嗎?您是否嘗試清除緩存中的 – raina77ow

+0

?您可以使用IE調試器工具。 – sbr

+0

@ raina77ow它播種相同的JSON結果。 – Psykopup

回答

0

嘗試添加該到URL:

var randomNum = Math.random() * 1000 | 1; 
url = url + "?randomNum=" + randomNum; 
+0

這是由jQuery在添加'cache:false'時完成的。 – OptimusCrime

0

您需要添加

type : 'GET' 

爲了您的Ajax請求在IE工作...

缺少該類型會在某些版本中引發錯誤

+0

添加類型沒有解決問題。我在IE中沒有收到任何錯誤。該服務實際上在IE中返回正確的結果。問題是,即使只有1個返回,IE也會將它們作爲多個結果返回。如果你看看我的代碼行 - if(results.response.length> 1){ - IE總是顯示那裏的結果,而不是else語句,當只有1個結果被返回時,它應該在哪裏。 – Psykopup