【问题标题】:Unable to return succes message in jquery while posting data succesfully成功发布数据时无法在jquery中返回成功消息
【发布时间】:2019-11-12 20:36:28
【问题描述】:

我正在尝试创建一个将数据从视图发布到我的控制器的应用程序,这是可行的。但是,当我尝试使用警报进行反馈(成功或错误)时,它只会给我错误。

HTML:

 <!--ALERTS-->
    <div class="alert alert-success" id="success-alert">
        <button type="button" class="close" data-dismiss="alert">x</button>
        <strong>API has been added!</strong>
    </div>
    <div class="alert alert-danger" id="danger-alert">
        <button type="button" class="close" data-dismiss="alert">x</button>
        <strong>API has not been added!</strong>
    </div>
 <!--ALERTS-->

jQuery:

 $(document).ready(function () {

                $("#success-alert").hide();
                $("#danger-alert").hide();

                $("#btnSubmit").click(function () {
                    var datastring = $("#myForm").serialize();

                    $.ajax({
                        type: "POST",
                        url: "/ApiBroker/AddApi",
                        dataType: 'json',
                        data: datastring,  
                        success:
                            function () {
                                $("#success-alert").fadeTo(2000, 500).slideUp(500, function () {
                                    $("#success-alert").slideUp(500);
                                });
                        },
                        error:
                            function () {
                                $("#danger-alert").fadeTo(2000, 500).slideUp(500, function () {
                                    $("#danger-alert").slideUp(500);
                                });
                            }
                    });

                    $('#myModal').modal('hide');
                    $('body').removeClass('modal-open');
                    $('.modal-backdrop').remove();
                })
            })

控制器:

 [HttpPost]
    public ActionResult AddApi(ApiRedirect model)
    {
        var data = model;
        try
        {
            List<ApiRedirect> list = dbProducts.ApiRedirects.ToList();
            int companyID = dbProducts.Companies.Where(x => x.CompanyName == model.Company.CompanyName).FirstOrDefault().CompanyID;
            int mappingID = dbProducts.MappingNames.Where(x => x.Name == model.MappingName.Name).FirstOrDefault().MappingID;
            ApiRedirect api = new ApiRedirect();
            api.ApiName = model.ApiName;
            api.CompanyID = companyID;
            api.ApiURL2 = model.ApiURL2;
            api.MappingID = mappingID;
            api.ResponseType = model.ResponseType;
            dbProducts.ApiRedirects.Add(api);
            dbProducts.SaveChanges();
            return new HttpStatusCodeResult(200);
        }
        catch (Exception ex){
            throw ex;
        }
    }

我的控制器将数据插入到我的数据库中,并且我在我的控制器中返回了状态码 200。但是在我的 JQuery 中处理的是错误而不是成功。

发布数据时的输出:

更新

当我在 JQuery 中使用 console.log(data) 时,我得到以下输出:

有人有什么建议吗?

提前致谢!

【问题讨论】:

    标签: c# jquery asp.net model-view-controller error-handling


    【解决方案1】:

    改变方法

    [HttpPost]
        public JsonResult AddApi(string value)
        {
            try
            {
    
                return Json("OK");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    

    如果使用 ActionResult,则为以下内容

     [HttpPost]
        public ActionResult AddApi(string value)
        {
    
            try
            {
                return Json(new {value = "complete"});
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    

    如果将以下内容添加到ajax错误中,您将能够看到错误

       function(xhr, status) {
           alert(status);
       }
    

    【讨论】:

    • 同样记录错误并在异常中返回错误信息,更好的UX
    • 这是一个解析器错误,我已经更新了我的答案,你需要发回 json
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多