我的 MVC3 应用程序将用户的文档上传到我们的服务器。我返回一个 JsonResult 以显示任何错误(如果有):
[HttpPost]
public JsonResult SaveDocument(DocumentModel model, HttpPostedFileBase postedFile)
{
//my wonderful code
return Json(new { success = true, message="ok" });
}
这是我提交请求的方式:
var isSubmitting = false;
var addDocumentOptions = {
beforeSubmit: beforeAddDocumentSubmit, // pre-submit callback
success: afterDocumentSubmit // post-submit callback
};
$('#btnCreateDocument').click(function (e) {
e.preventDefault();
$('#divError').html('');
if (!isSubmitting) {
$('#createDocForm').submit();
}
});
上传完成后运行此 JavaScript 函数:
function afterDocumentSubmit(responseText, statusText, xhr, $form) {
if (responseText.success) {
//no errors
} else {
$('#divError').html('Error: ' + responseText.message);
}
}
在 FF、Chrome 等中,我的 javascript 代码运行良好,但在 IE 中,浏览器希望将 Json 结果下载为文本。我收到一个不应出现的下载/打开文件对话框。如何让 IE 不下载我的 Json 结果并像其他浏览器一样运行?谢谢
我在 Java 上的 Spring MVC 中遇到了类似的问题。问题是 Spring 将 JSON 结果的内容类型返回为application/json
,这似乎让 IE 想要下载它。您可以尝试将内容类型更改为text/plain
;在这种情况下,IE 不会提示您下载该文件。我怀疑这里可能会发生类似的事情。
你可以尝试:
return Json(new { success = true, message = "ok" }, "text/plain");
针对您的新问题:问题是responseText
只是一个字符串。您需要做的就是将其转换为 Javascript 对象。你可以这样做:
var response = JSON.parse(responseText);
if(response.success) {
...
}
大多数浏览器都支持JSON.parse()
。如果您在使用不兼容的浏览器时遇到问题,您可以随时使用JSON JavaScript 库.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)