首先,请理解我并不是想在IE9中查看JSON。我一直都在使用Fiddler。我有一个名为Fine Uploader的第三方上传程序,它在成功上传Ajax文件时需要JSON响应消息。
现在我明白IE9没有MIME来显示JSON,但我不是试图显示JSON。我只是在ajax上传一些文件并且IE9试图打开我的ajax响应后返回一个JSON响应。
由于我打算用JSON格式化所有Web API响应,我是否必须为每个api调用添加自定义text / html响应内容类型以使我的应用程序与IE9兼容?严重荒谬的东西,我无法克服多少时间浪费在处理IE兼容性问题上。
答案 0 :(得分:7)
尽管Ray的回答有效,但这会改变所有Json响应的响应内容类型。理想情况下,我们不应该影响浏览器的响应类型。
要想轻松解决此问题(特别是在MVC中),请参阅my answer to this question。
简而言之,以下代码可以解决这个问题,如果适用,可以将其包装到基本控制器/辅助方法中:
if (!Request.AcceptTypes.Contains("application/json"))
return base.Json(data, "text/plain");
else
return base.Json(data);
我希望能帮到别人!
答案 1 :(得分:3)
在WebAPI中,您可以在Global.asax中触发的配置中设置全局响应。这样,您的所有浏览器都会将您的WebAPI响应视为真正的JSON。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// stuff...
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("application/json"));
// Most important... +++++++++++++
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("text/html"));
// -------------------------------
config.EnsureInitialized();
}
}
答案 2 :(得分:1)
问题是你的回复的内容类型:它必须是“text / plain”,而不是“application / json”。
答案 3 :(得分:0)