我正在使用IE8,我正在向url发送ajax请求,该请求以json的形式发回响应。下面给出了ajax设置的jquery代码:
$(document).ready(function(){
$.ajax({
url: url_string,
dataType: "json",
success: function(response){
alert('all is well');
},
error: function(request, status, error){
alert(request);
alert(status);
alert(error);
}
});
});
我确信服务器正在发送JSON响应,但IE8将其视为文件并显示下载弹出框。但同样的过程适用于FF和Chrome。当我在 dataType
中将 json 替换为 jsonp 时,仍然会发生这种情况但它总是进入错误回调方法。
我的 json 响应正文也包含一个包含 html标记的字符串。
知道为什么会这样吗?
由于
答案 0 :(得分:10)
我遇到了同样的问题并通过在所有IE请求的响应标头中设置Content-type =“text / html”来修复它(而不是“application / json”)
我还写了一篇关于它的博客文章,其中包含更多信息:http://blog.degree.no/2012/09/jquery-json-ie8ie9-treats-response-as-downloadable-file/
答案 1 :(得分:3)
根据发送json的内容,您必须将其作为mime类型文本发送。 所以在rails中我必须这样做。
render :text => my_array.to_json
而不是
render :json => my_array
答案 2 :(得分:0)
我修改了你的代码的url并使用了最新版本的JQuery,它在我的IE8中运行良好
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
$(document).ready(function() {
$.ajax({
url: "http://api.flickr.com/services/feeds/groups_pool.gne?id=807213@N20&lang=en-us&format=json&jsoncallback=?",
dataType: "json",
success: function(response){
alert('all is well');
alert($.param(response));
},
error: function(request, status, error){
alert(request);
alert(status);
alert(error);
}
});
});
</script>
</body>
</html>
有一个已知的问题,详见本answer,其中IE8在结果数组中有额外的逗号问题。检查响应警报的内容。