使用ajax contentType调用action方法时出现问题

时间:2016-11-26 19:53:42

标签: c# jquery ajax asp.net-mvc

我有一个需要通过Ajax回发的应用程序。调用ActionMethod时遇到问题。下面是代码。

控制器:

[HttpGet]
    public ActionResult Index()
    {
        return View();
    }

    public JsonResult AjaxTest(object name)
    {
        return Json("Welcome" + name, JsonRequestBehavior.AllowGet);
    }

Cstml:

<form name="frmTest" method="POST">
@Html.Label("Your name Please")
@Html.TextBox("username")
<input class="btn btn-success btn-lg btn-block" type="submit" value="Login">

JQuery:

$(function () {
    $("form[name='frmTest']").submit(function (e) {
        var name = $('#username').val();
      $.ajax(
      {
          type: "POST",
          //contentType: "application/json; charset=utf-8",
          url: "MyTest/AjaxTest",
          dataType: "json",
          data: { name:name },
          success: function (data, status) {
              alert("Pass"+data);
          },
          error: function () {
              alert("Fail");
          }
      });
  });

});

使用上面的代码断点使用参数命中AjaxTest。当我使用contentType: "application/json; charset=utf-8",然后页面回弹而没有达到断点。 但是这两种情况我都失败了。无法找到问题,

1 个答案:

答案 0 :(得分:1)

我不确定你要做什么,但是因为在你发表的其中一条评论中你会将内容保存到数据库中,通常,在ASP MVC中它会像这样完成。

使用AJAX为您发布的任何内容创建一个类。例如,在此示例中,我创建了一个名为Person

的类
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

然后在你的表格中你可以有这样的东西:

@{
    ViewBag.Title = "Test";
}

<form name="frmTest" method="POST">
    @Html.Label("Your name Please")
    @Html.TextBox("username")
    <input class="btn btn-success btn-lg btn-block" type="submit" value="Login">
</form>

<script>
    $(function () {
        $("form[name='frmTest']").submit(function (e) {
            var name = $('#username').val();
            $.ajax(
            {
                type: "POST",
                //contentType: "application/json; charset=utf-8",
                url: "AjaxTest",
                dataType: "json",
                data: { "Age": 55, "Name": name },
                success: function (data, status) {
                    alert("Pass" + data);
                },
                error: function (ex) {
                    alert("Fail" + ex);
                }
            });
        });
    });

</script>

然后有一个JSON将被提交的动作。对于上述情况,行动将是这样的:

public JsonResult AjaxTest(Person person)
{
    return Json("Welcome" +  person.Name, JsonRequestBehavior.AllowGet);
}

ASP MVC将为您处理绑定。还请注意我发布的网址是&#34; AjaxTest&#34;它将发布到服务表单的控制器的AjaxTest动作方法。

如果您有如下控制器,则以上所有操作都可以。

public class AccountController : Controller
{
    // This returns the view with the form
    public ActionResult Test()
    {
        return View();
    }
    public JsonResult AjaxTest(Person person)
    {
        return Json("Welcome" +  person.Name, JsonRequestBehavior.AllowGet);
    }
}