代码之家  ›  专栏  ›  技术社区  ›  KYEmr

使用ajax ASP发布。净额

  •  0
  • KYEmr  · 技术社区  · 7 年前

    控制器

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Index(Contact contact)
        {
            using (LawContext DB = new LawContext())
            {
                if (ModelState.IsValid)
                {
                    DB.Contact.Add(contact);
                    DB.SaveChanges();
                    return Json("OK");
                }
    
                return View();
            }
        }
    

    看法

                    @using (Html.BeginForm("Index", "Contact", FormMethod.Post))
                    {
                            @if (!ViewData.ModelState.IsValid)
                            {
                                    @Html.ValidationSummary("", new { @class = "alert-danger" })
                            }
                            @Html.AntiForgeryToken()
                                @Html.TextBoxFor(m => m.Lastname, new { @class = "form-control margin-bottom10", @placeholder = "Name" })
    
                                @Html.TextBoxFor(m => m.Mail, new { @class = "form-control margin-bottom10", @placeholder = "Mail" })
    
                                @Html.TextBoxFor(m => m.Phone, new { @class = "form-control margin-bottom10", @placeholder = "Phone" })
    
                                @Html.TextAreaFor(m => m.Message, new { @class = "form-control margin-bottom10", @placeholder = "Message", @rows = "3" })
    
                                <input type="submit" value="Submit" class="btn btn-darkgray" id="btn_contact" />
                    }
    

    $(document).ready(function () {
        $("#btn_contact").click(function () {
    
            $.ajax(
                {
                    type: "POST",
                    url: "Contact/Index", 
                    data: { 
                        Lastname: $("#Lastname").val(),
                        Mail: $("#Mail").val(),
                        Phone: $("#Phone").val(),
                        Message: $("#Message").val()
                    },
                    dataType: "json",
                    async: true,
                    processData: false,
                    cache: false,
                    contentType: "application/json; charsetset=utf8",
                    success: function (data) {
                        alert('success');
                    },
                    failure: function (data) {
                        alert('failure');
                    },
                    error: function (data) {
                        alert('error');
                    }
                });
        });
    });
    

    我不明白为什么会这样 通常不需要发出警报? 我该怎么做?我需要你的帮助。 我研究了许多例子。 我想我失去了不用问就能做的希望。

    我想好好工作。

    1 回复  |  直到 7 年前
        1
  •  1
  •   codejockie    7 年前

    尝试将“提交”按钮更改为:
    <input type="button" value="Submit" class="btn btn-darkgray" id="btn_contact" />

    或者可以保持原样,在Ajax调用中执行以下操作:

    $(document).ready(function () {
        $("#btn_contact").click(function (event) {
            event.preventDefault();
    
            $.ajax(
                {
                    type: "POST",
                    url: "Contact/Index", 
                    data: { 
                        Lastname: $("#Lastname").val(),
                        Mail: $("#Mail").val(),
                        Phone: $("#Phone").val(),
                        Message: $("#Message").val()
                    },
                    dataType: "json",
                    async: true,
                    processData: false,
                    cache: false,
                    contentType: "application/json; charsetset=utf8",
                    success: function (data) {
                        alert('success');
                    },
                    failure: function (data) {
                        alert('failure');
                    },
                    error: function (data) {
                        alert('error');
                    }
                });
        });
    });
    

    这是为了防止将表单发送到操作url的“提交类型”按钮的默认行为( <form action="contact/index" method="POST" ... )在你的情况下,你没有。