我试图从我的操作中返回 Json,然后 IE 尝试下载它并显示保存对话框。 我在 Firefox 中对其进行了测试,它运行良好。
return Json(new { success = false, message = ex.Message }, "application/json");
该行为的原因是什么?我该如何解决该问题?
之后在 Javascript 部分我试试这个
if (responseJSON.success == false) {
alert(responseJSON.message);
cancel();
}
但是 IE 无论如何都不会显示警报。它给我带来了保存对话框。
我尝试将 "application/json"
更改为 "text/plain"
并且保存对话框消失了,但我还看不到警报。我错过了什么?
编辑:
这是我的复杂 Javascript,我正在使用 Valums qquploader(ex-Ajaxupload) 上传图片
var uploader = new qq.FileUploader({
element: document.getElementById("image-upload"),
action: '/Home/ImageUpload',
allowedExtensions: ['jpg', 'png', 'gif'],
sizeLimlit: 2048,onComplete: function (id, fileName, responseJSON) {
if (responseJSON.success == false) {
alert(responseJSON.message);
cancel();
}
else {
alert("success");
//some code here
}
}
});
我在其他部分使用 alert("success");
进行了测试,并将 json 转发为 "text/plain"
之后我看到了警报。但在那个时候 responseJSON.success != false
对我来说。你对此有什么建议吗?
最佳答案
我已经用这个技巧解决了这个问题
return Json(new { success = false, message = ex.Message }, "text/html");
现在可以了。但是谁能解释为什么它适用于 text/html,而不适用于 application/json 和 text/plain。首先是尝试下载 JSON,其次是返回 JSON 字段的未定义属性。
关于javascript - IE 尝试在 ASP 中下载 JSON。净 MVC 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8591998/