浏览器下载 JSON 结果,而不是传递回脚本

Browser downloads JSON result instead of passing back to script

本文关键字:脚本 下载 JSON 结果 浏览器      更新时间:2023-09-26

我写了一个MVC3应用程序,其中我使用Valums文件上传器。当用户上传文件时,服务器会传回一个 JSON 对象,指示成功/失败以及可能的错误消息。一些用户报告说,他们的浏览器要求他们采取行动,就像下载文件(保存/打开)一样,而不是将JSON传递给javascript。

我正在使用分布式上传器,我的 C# 控制器返回如下所示的 JSONResult

return JSON(new { success = true }, "application/json");

或者如果出现问题

return JSON(new { success = false, error = exception.Message });

我无法重现这一点,并且已经从IE9和Chrome的用户那里得到了报告。有没有人发生过这种情况,你做了什么来解决它?或者我应该从哪里开始故障排除?

编辑:文件上传器将在onComplete事件上运行以下命令:

function(id, filename, responseJson) {
  if(responseJson.success != true) {
    alert("An error occurred: " + responseJson.error);
    return false;
  }
  return true;
}

试试这个:

return Json(new { success = true }, JsonRequestBehavior.AllowGet);

事实证明,问题是IE不处理application/json内容类型。将其设置为 text/html 可以使其工作,尽管它非常糟糕。