Anu*_*adi 38 json internet-explorer-9
用IE9开始测试我的jQuery应用程序.看起来我可能在这里遇到麻烦.我注意到当我将JSON数据返回到Javascript方法时,我总是得到这个提示符:"你想打开还是保存这个文件?" 并为我提供了3个按钮:打开,保存和取消.当然,我的javascript基于JSON对象中设置的值进行操作,但由于IE9没有将其传递给脚本,我无法从那里执行后续操作.
其他人面临这个问题?这是一个快照.
Dea*_*ano 21
如果有人使用ASP.net MVC并试图解决这个问题 - 我在MVC框架中使用了以下内置方法.只需更新JsonResult上的内容类型和编码即可.
public ActionResult Index(int id)
{
// Fetch some data
var someData = GetSomeData();
// Return and update content type and encoding
return Json(someData, "text/html", System.Text.Encoding.UTF8,
JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
这为我解决了这个问题!
Chr*_*ris 13
(最初为此问题发布的答案.)
如果使用MVC,处理此问题的一种方法是实现一个基本控制器,您可以在其中覆盖(隐藏)Json(对象)方法,如下所示:
public class ExtendedController : Controller
{
protected new JsonResult Json(object data)
{
if (!Request.AcceptTypes.Contains("application/json"))
return base.Json(data, "text/plain");
else
return base.Json(data);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您的控制器都可以继承ExtendedController并简单地调用return Json(model);
...
Json(data, "text/plain")
在各种Ajax操作方法中使用这适用于json请求,否则将在IE8和IE9中显示"打开或保存"消息,例如由jQuery文件上载生成的消息
我昨天也遇到了这个问题,WebAPI返回了一个URL列表(异步上传的文件).
只需将内容类型设置为"text/html",而不是WebAPI服务的默认"application/json; charset = UTF-8".我得到了一个JSON字符串的响应,然后使用$ .parseJSON将其转换为JSON对象.
public async Task<HttpResponseMessage> Upload()
{
// ...
var response = Request.CreateResponse(HttpStatusCode.OK, files);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
}
// result is an iframe's body content that received response.
$.each($.parseJSON(result.html()), function (i, item)
{
console.log(item.Url);
});
Run Code Online (Sandbox Code Playgroud)
事实上,你是对的@EricLaw。在 Json 结果中设置内容类型后,它就起作用了。我必须添加以下几行:
result.ContentEncoding = System.Text.Encoding.UTF8;
result.ContentType = "application/json; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45450 次 |
最近记录: |