如何使用 jQuery Ajax 序列化表单和 post

How to serialize forms and post using jQuery Ajax

我正在尝试从我的数据库中删除记录...... 这就是我的表单的样子.........

@using (Html.BeginForm("RemoveDoctor", "Doctor", FormMethod.Post, new { @id = "form" }))
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.Id)
    @Html.HiddenFor(model => model.Name)
    <div class="form-actions no-color">
        <input type="submit" value="Delete" class="btn btn-default" id="submit" /> |

    </div>
}

我正在尝试从视图中获取这些记录并传递给我的控制器 Action 方法...................................... .. 我正在尝试序列化此表单并将其发送到该操作方法,如下所示......................

var jsonObj = $('#form').serialize();

它序列化我的 Ajax POST 函数不会 运行 的形式...... 它只是给我一个错误!!!!......................我只需要将该序列化值传递给我的 Action 方法...................... ....这就是我的脚本的样子.................................

$('#submit').click(function () {

     var jsonObj = $('#form').serialize();
     alert(jsonObj);

     $.ajax({
           type: "POST",
           url: '../Doctor/RemoveDoctor',
           data: JSON.stringify({ "doctor": jsonObj }),
           success: function (data) {
                 alert(data.Message);
           },
           error: function () {
                  alert("Error!!!");
           }
      });
      return false;

});

这就是我的操作方法的样子......

  public ActionResult RemoveDoctor(DoctorModel doctor)
  {
      bool confirmationResult = doctorManager.RemoveDoctor(doctor.Id);
      string displayMessage = string.Empty;
      if (confirmationResult == true)
           displayMessage = "You have successfully removed your record!!";
      else
           displayMessage = "Error!! Some Thing Went Wrong, Please Try Again!!";

      return Json(new { Message = displayMessage });

  }

我正在尝试将此 'displayMessage' 发送到我的 jQuery 代码......请告诉我如何解决这个......谢谢!!!!!

试试这个

 $.ajax({
           type: "POST",
           url: '../Doctor/RemoveDoctor',
           data: $('#form').serialize(),
           success: function (data) {
                 alert(data.Message);
           },
           error: function () {
                  alert("Error!!!");
           }
      });

它将序列化您的表单。

仅使用 $('#form').serialize() 进行序列化。

编辑

如果您不想刷新页面,那么您应该使用 type="button" 而不是 type="submit"

你也应该这样做

[HttpPost]
public ActionResult RemoveDoctor(DoctorModel doctor)
  {
      //...................
      return Json(new { Message = displayMessage } , JsonRequestBehavior.AllowGet);

  }

并将ajax错误函数更改为此(用于获取错误)

error: function(jqXHR, textStatus, errorThrown)
{
  alert("Error: "+errorThrown+" , Please try again");   
}