我正在尝试使用
JQuery Form插件(http://jquery.malsup.com/form/)从我的视图上传文件和一些额外的字段,我希望action方法将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结果作为动作方法的“内容”结果返回,我认为这是我要采取的方法,但我仍然想知道为什么这不是工作?
有任何想法吗?