0

$.getJSON 正在返回一个带有 IE 和 Opera 浏览器(Firefox、Chrome ......工作正常)的文件。

代码是这样的:

$.getJSON("http://open.mapquestapi.com/nominatim/v1/search.php?format=json&osm_type=N&bounded=1&limit=100&viewbox=-5.667593479156494,43.54767717445222,-5.656242370605469,43.54280902999833&q=Restaurants",
{
    tagmode: "any",
    format: "json"
},
function(data) {
    var ind = 0;
    $.each(data, function(i, pos_reg){
       alert("Recovery " + i++ + " row");
    });
})
.error(function() {       
    alert("Was an error");
});

我认为问题是从服务器返回的 Http 标头。如果我将URL粘贴到Firefox 或 Chrome 上,我会看到 JSON 响应。如果我将 URL 粘贴到 IE 和 Opera 上,他们会尝试将 JSON 响应下载为文件。

我试过这样的东西:

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});

但同样的结果:(

请问有什么想法吗?提前致谢!

4

1 回答 1

2

这不是问题的答案。真正的问题(最初的问题很模糊)是如何在 Opera 和 Internet Explorer 中进行跨域 ajax 调用。

复制到跨域 Ajax 请求在 Opera 和 IE9 中不起作用?由主题启动器链接。


我知道 Opera 默认情况下不会打开 JSON,它确实会尝试下载文件。您可以在设置中更改此设置:“设置”>“高级”>“下载”,现在搜索json,如果找不到,可以创建一个新类型。现在填写application/json并将其设置为使用 Opera 打开(我还添加了text/json因为有时网站会返回此内容类型)。以下是这些屏幕的屏幕截图:

Opera json 下载设置

我猜你也可以在 Internet Explorer 中做类似的事情。编辑:我找到了 Internet Explorer 的解决方案。之前已经在 SO 上回答过,所以我将在这里发布答案的链接:https ://stackoverflow.com/a/2492211 。

于 2012-05-14T08:39:24.123 回答