2012-05-17 100 views
1

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

我使用的是上传的分配,我的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; 
} 
+0

你可以显示你的JavaScript json解析代码 – FosterZ

回答

0

原来,问题是,IE浏览器不处理application/json内容类型。将它设置为text/html可以使它工作,虽然它很糟糕。

1

试试这个:

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

这并不能解决问题。实际上,请求不是使用GET完成的,而是POST。如果AllowGet丢失了,那么控制器会抛出一个错误。在这种情况下,一些浏览器将返回的JSON视为文件进行下载,这不是我想要的。 – carlpett

相关问题