jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – ASP.Net MVC使用jquery-form插件上传文件并返回Json结果大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 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结果作为动作方法的“内容”结果返回,我认为这是我要采取的方法,但我仍然想知道为什么这不是工作?

有任何想法吗?

解决方法

我最终做的是手动序列化我想要返回的对象作为JSON,如果我这样做,那么响应将没有标题,因此它将由javascript而不是浏览器处理.我使用了这个辅助方法
public static ActionResult JsonPlain(object x)
  {
     var result = new ContentResult();
     result.Content = new JavaScriptSerializer().Serialize(x);
     return result;
  }

希望这有助于其他人

大佬总结

以上是大佬教程为你收集整理的javascript – ASP.Net MVC使用jquery-form插件上传文件并返回Json结果全部内容,希望文章能够帮你解决javascript – ASP.Net MVC使用jquery-form插件上传文件并返回Json结果所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: