驚いたことに、私のコードは 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 ステートメントから 1 つまたは複数の結果を表示しますが、Chrome と FF は ELSE ステートメントから 1 つの結果を表示します。
?({
errormsg: '',
response: [
{
latlng:'36.167352999999999,-115.148408',
score:'50',
streetno:'495',
streetname:'S Main St',
city:'Las Vegas',
state:'NV',
zip:'89101'
},
]
})