ASP.NET MVC 4使用Ajax调用提交表单

6

我在控制器里有这段代码:

[HttpPost]
    public ActionResult Create(Student student)
    { //somecode..

我想要从这里提交:

<form method="post" action="/student/create"> 
<!-- the from contents-->

如何使用Ajax调用提交表单 我需要JQuery Ajax调用,以便提交这个表单。

同时,我想确认数据类型, 谢谢。

3个回答

18

试试这个

var form = $('#formId');
$.ajax({
  cache: false,
  async: true,
  type: "POST",
  url: form.attr('action'),
  data: form.serialize(),
  success: function (data) {
    alert(data);
 }
});

表单 = document.forms[2]--- 当我使用 form.serialize() 时,出现类型错误 [serialize 不是函数] JQuery 已经包含了... 如何解决? - Muath
请问如何在提交表单之前触发默认的MVC验证? - Umar Abbas
@UmarAbbas 你可以尝试这样做:http://jsfiddle.net/cfwx3Ld5/ 并使用 Razor 表单代替 HTML。 - Umesh Sehta

5

如果您使用的是Razor视图,请使用以下内容:

@using (Ajax.BeginForm(new AjaxOptions(){
HttpMethod = "POST",
    Url = "your controller",
    OnComplete = "some client event"
})
{
    <fieldset>
        <legend>This is a demo form.</legend>
        @Html.LabelFor(model => model.Name)
        @Html.TextBoxFor(model => model.Name)

        <input type="submit" value="Save" />
    </fieldset>
}

你的 using 语句中缺少一个右括号。应该修改为:OnComplete = "some client event"}))。 - mokumaxCraig

1

那么它看起来应该像这样(没有查看您的视图绑定):

// serialize your form into JSON - maybe you have a different method of doing it
var serializedForm = $("#YourFormId").serialize();

// post it to the server
$.post("/student/create", serializedForm)
    .done(function (response) { 
       // it's done
    })
    .fail(function (xhr, status, error) { 
       // something bad happened
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接