IE8将json响应视为文件并尝试下载它
我正在使用IE8,我正在向url发送ajax请求,该请求以json的forms发回响应。 下面给出了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。 当我将data中的 json替换为jsonp时,仍会发生这种情况
但它总是进入错误回调方法。
我的json响应主体也包含一个带有html标签的字符串。
知道为什么会这样吗?
谢谢
我有同样的问题并通过在所有IE请求的响应头中设置Content-type =“text / html”来修复它(而不是“application / json”)
我还写了一篇关于它的博客文章,其中包含更多信息: http : //blog.degree.no/2012/09/jquery-json-ie8ie9-treats-response-as-downloadable-file/
根据发送json的内容,您必须将其作为mime类型文本发送。 所以在rails中我必须这样做。
render :text => my_array.to_json
代替
render :json => my_array
我修改了你的代码的url并使用了最新版本的JQuery,它在IE8中运行正常
这个答案中有一个已知问题,IE8在结果数组中有一个额外的逗号有问题。 检查响应警报的内容。