MVC Ajax警报无法正常工作

时间:2015-01-14 06:19:51

标签: jquery ajax asp.net-mvc

发布后我的提醒()未显示...

当我提交表单时,我看到发布的数据,看起来都很好,但警报('确定');来自ajax没有出现。我错过了什么?

@model Mvc5.Models.Test

@using (Html.BeginForm())
{

        @Html.AntiForgeryToken() 
        @Html.ValidationSummary(true)


        @Html.TextBoxFor(model => model.Name)
    <input type="submit" value="Add" class="btn btn-default" id="idForm" />

}

<div id="target">
@Html.Action("ShowList", "Test")
</div>

<script>
    $(document).ready(function () {
        // this is the id of the form
        $("#idForm").submit(function () {

            var url = "Test/Create"; // the script where you handle the form input.

            $.ajax({
                type: "POST",
                url: url,
                data: $("#idForm").serialize(), // serializes the form's elements.
                success: function (data) {
                alert('ok');                
                }
            });

            return false; // avoid to execute the actual submit of the form.
        });

    });
</script>

3 个答案:

答案 0 :(得分:0)

添加错误,如下所示,查看正在显示的警报消息。您还可以添加调试器和开发人员工具来进行调试。

$.ajax({
  type: "POST",
  url: url,
  data: $("#idForm").serialize(), // serializes the form's elements.
  success: function (result, status) {
    if (status == 'success') {
      if (result.success) {
        OnSuccessActions();
      } else {
        $('.ValidationSummary').html(result.Error);
      }
    }
  },   
  error: function() {
   alert('error!');
  }
});

答案 1 :(得分:0)

您应该在提交给控制器之前验证表单,请参阅下面的代码

$("#myForm").submit(function (e) {
                e.preventDefault();
            });
            $("input#submitForm").click(function () {
                if ($('#myForm').valid()) {
                    $.ajax({
                        type: "POST",
                        url: "/controllerName/ActionName",
                        data: $("#myForm").serialize(),
                        success: function (result) {
                           alert('sucess');
                        }
                    });

                } return false;
            });

并且不要忘记包含验证脚本

src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">
src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript">

还从控制器返回json

public ActionResult ActionName()
{
  return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}

我希望它会对你有所帮助。

答案 2 :(得分:0)

如果您的ajax请求从您的api收到200状态代码,您的成功函数将会运行。我要仔细检查以确保发生这种情况。

修改。

您还应该阻止表单执行服务器回发,因为您正在进行ajax调用。

$("#idForm").submit(function (e) {
      e.preventDefault();

      var url = "Test/Create"; // the script where you handle the form input.