Bou*_*ory 2 javascript c# asp.net-mvc-3
我的MVC3应用程序将文档从用户上传到我们的服务器.我返回一个JsonResult来显示任何错误,如果有的话:
[HttpPost]
public JsonResult SaveDocument(DocumentModel model, HttpPostedFileBase postedFile)
{
//my wonderful code
return Json(new { success = true, message="ok" });
}
Run Code Online (Sandbox Code Playgroud)
以下是我如何提交请求:
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();
}
});
Run Code Online (Sandbox Code Playgroud)
上传完成后,此javascript函数将运行:
function afterDocumentSubmit(responseText, statusText, xhr, $form) {
if (responseText.success) {
//no errors
} else {
$('#divError').html('Error: ' + responseText.message);
}
}
Run Code Online (Sandbox Code Playgroud)
在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");
Run Code Online (Sandbox Code Playgroud)
为了解决您的新问题:问题在于它responseText只是一个字符串.您需要做的是将其转换为Javascript对象.你可以这样做:
var response = JSON.parse(responseText);
if(response.success) {
...
}
Run Code Online (Sandbox Code Playgroud)
大多数浏览器都支持JSON.parse().如果您遇到与不兼容的浏览器有关的问题,您可以随时使用JSON Javascript库.
| 归档时间: |
|
| 查看次数: |
4523 次 |
| 最近记录: |