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'
        },
    ]
})
4

2 回答 2

0

您需要添加

type : 'GET'

为了让您的 Ajax 请求在 IE 中工作...

在某些版本中缺少类型会引发错误

于 2012-10-24T00:40:46.367 回答
0

尝试将其添加到 url:

var randomNum = Math.random() * 1000  | 1;
url = url + "?randomNum=" + randomNum;
于 2012-10-23T23:44:29.930 回答