【发布时间】:2011-07-01 17:44:42
【问题描述】:
我正在尝试使用 JQuery 表单插件 (http://jquery.malsup.com/form/) 从我的视图中上传一个文件和几个额外的字段,并且我希望操作方法返回一个 Json javascript回调的结果。
目前,ActionMethod 被正确调用(我可以处理表单中的文件和字段)但是当我返回 Json 结果时,浏览器会尝试将其作为文件下载(如果我下载文件并查看其内容,则我返回的 JSON 内容。)。
这是我的表格:
<form id="FormNewFile" action="@Url.Content("~/Home/AddFile")" method="post" enctype="multipart/form-data">
<input type="hidden" name="eventId" value="25" />
<input type="text" name="description" />
<input type="file" name="fileName" />
<input type="submit" value="Send!" />
</form>
这是我的 javascript:
<script type="text/javascript">
$(function () {
$("#FormNewFile").ajaxForm({
dataType:'json',
success:processJson
});
});
function processJson(a,b) {
alert('success');
}
</script>
这是我的 ActionMethod:
[HttpPost]
public ActionResult AddFile(long? eventId, string description)
{
int id = 5;
return Json(new {id});
}
浏览器尝试下载的文件名称类似于 AddFilee87ce48e,最后 8 个字符是随机的十六进制字符。
最后,下载的文件内容是:
{"id":5}
而且 javascript 中的 processJson 函数永远不会被调用。
我在 Google 上搜索了很多,唯一可行的是将 JSON 结果作为 action 方法的“内容”结果返回,我认为这就是我要采用的方法,但我仍然想知道为什么会这样不工作?
有什么想法吗?
【问题讨论】:
标签: javascript asp.net-mvc ajax json forms