Ajax 提交表单包括文件上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax 提交表单包括文件上传相关的知识,希望对你有一定的参考价值。

利用js插件实现

<script src="@Url.Content("~/js/layer/jquery.form.min.js")"></script>

 

实例代码

前端:

@using WebSearch.EFDB;
@{

    ViewBag.Title = "UploadFeeCertificate";
    NoveltyProxy proxy = ViewData["Proxy"] as NoveltyProxy;
}


<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="@Url.Content("~/js/jquery-2.1.1.js")"></script>

    <link href="@Url.Content("~/css/bootstrap.min.css")" rel="stylesheet">
    <link href="@Url.Content("~/font-awesome/css/font-awesome.css")" rel="stylesheet">
    <link href="@Url.Content("~/css/plugins/iCheck/custom.css")" rel="stylesheet">
    <link href="@Url.Content("~/css/animate.css")" rel="stylesheet">
    <link href="@Url.Content("~/css/style.css")" rel="stylesheet">
    <script src="@Url.Content("~/js/jquery-ui-1.10.4.min.js")"></script>
    <script src="@Url.Content("~/js/bootstrap.min.js")"></script>
    <script src="@Url.Content("~/js/bootstrap-table.js")"></script>
    <script src="@Url.Content("~/js/bootstrap-table-zh-CN.js")"></script>
    <script src="@Url.Content("~/js/selectjs/bootstrap-select.js")"></script>
    <link href="@Url.Content("~/js/selectjs/bootstrap-select.min.css")" rel="stylesheet" />
    <script src="@Url.Content("~/js/selectjs/defaults-zh_CN.js")"></script>
    <script src="@Url.Content("~/js/layer/layer.js")"></script>
    <script src="@Url.Content("~/js/bootstrap.min.js")"></script>
    <script src="@Url.Content("~/js/plugins/metisMenu/jquery.metisMenu.js")"></script>
    <script src="@Url.Content("~/js/plugins/slimscroll/jquery.slimscroll.min.js")"></script>

    <!-- Custom and plugin javascript -->
    <script src="@Url.Content("~/js/inspinia.js")"></script>
    <script src="@Url.Content("~/js/plugins/pace/pace.min.js")"></script>

    <!-- iCheck -->
    <script src="@Url.Content("~/js/plugins/iCheck/icheck.min.js")"></script>
    <!-- Jvectormap -->
    <script src="@Url.Content("~/js/plugins/jvectormap/jquery-jvectormap-2.0.2.min.js")"></script>
    <script src="@Url.Content("~/js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js")"></script>
    <script src="@Url.Content("~/js/JsIFrame.js")"></script>
    <script src="@Url.Content("~/js/layer/jquery.form.min.js")"></script>

</head>

<body onload="IFrameResize()">
    <div style="background-color:#f3f3f3;height:100%">
        <div class="row">
            <div class="col-lg-12">
                <div class="ibox float-e-margins">

                    <div class="ibox-title">
                        <h5>缴费单据上传</h5>
                        <div class="ibox-tools">
                            <a class="collapse-link">
                                <i class="fa fa-chevron-up"></i>
                            </a>
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                                <i class="fa fa-wrench"></i>
                            </a>
                            <a class="close-link">
                                <i class="fa fa-times"></i>
                            </a>
                        </div>
                    </div>
                    <form id="editform" method="post" enctype="multipart/form-data">
                        <div class="ibox-content">
                            <div class="form-group">

                                <p>
                                    委托单:<input type="text" value="@proxy.PrjName_cn" readonly="readonly" style="width:25%;height:30px;margin-bottom:8px;border: 1px solid #ddd;">
                                    <input type="hidden" name="proxyid" value="@proxy.ID" />
                                    <input type="hidden" id="ispay" value="@proxy.IsPayed" />
                                </p>

                                <p>选择上传文件:<input id="lefile" name="lefile" type="file" accept="image/*"></p>
                                <p><input type="button" id="submitPic" class="btn btn-w-m btn-success" value="提交" /></p>
                            </div>

                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        $(function () {

            $("#submitPic").click(function () {

                $("#editform").ajaxSubmit({
                    url: "../FeeHistory/AjaxUploadFee",
                    success: function (data) {
                        var t = $.parseJSON(data);
                        if (t.Result == true) {
                            alert("上传成功!");
                            location.href = "../NoveltyProxy/ProxyManage"
                        } else {
                            alert("上传失败!");
                        }
                    }
                });

            })
          
                


        });
    </script>

</body>

</html>

2.后端代码:

 /// <summary>
        /// AJAX提交上传收费凭据form
        /// </summary>
        /// <returns></returns>
        public string AjaxUploadFee()
        {
            RoleUser login = System.Web.HttpContext.Current.Session["Login"] as RoleUser;
            FeeHistory model = new FeeHistory();
            model.Addtime = DateTime.Now;
            model.AddUserId = login.ID;
            model.AddUserName = login.UserName;
            model.ProxyID = Request.Form["proxyid"];
            model.AdminChecked = false;
            HttpPostedFileBase uploadFile = Request.Files["lefile"] as HttpPostedFileBase;

            if (uploadFile != null)
            {

                int last = uploadFile.FileName.LastIndexOf(".");
                string name = uploadFile.FileName.Substring(last, uploadFile.FileName.Length - last);
                string docxname = "缴费说明" + DateTime.Now.ToString("yyyyMMddHHmmss") + name;
                string pathForSaving = Server.MapPath("~/Word/JFSM/" + docxname);
                uploadFile.SaveAs(pathForSaving);
                if (System.IO.File.Exists(pathForSaving))
                {
                    model.ImgUrl = "../Word/JFSM/" + docxname;
                }
            }
            bool result = Fls.AddFeeHistory(model);
            string Msg = "";
            var Mod = new
            {
                Result = result,
                Msg = Msg
            };
            string json = JsonConvert.SerializeObject(Mod);
            return json;
        }

注意。

 Request.Form[]是根据控件的Name获取的,并不是ID。jq用久了可能会遗忘这个事情。

以上是关于Ajax 提交表单包括文件上传的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax提交form表单,包括ajax文件上传

使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html

jquery.form.js ajax提交上传文件

怎么用ajax 提交上传的文件上传后在界面显示出来。但界面不刷新

ajax提交表单,并且可以支持文件上传

AJAX提交form表单带文件上传