mvc5中的Ajax调用总是返回错误

时间:2014-05-04 16:24:33

标签: jquery ajax asp.net-mvc

我的控制器操作(在AjaxMethodsController中)是:

public ActionResult CreateGroup(String groupName)
        {
            ApplicationUser user;
            var userName = User.Identity.Name;
            using (DAL.GDContext context = new DAL.GDContext())
            {
                user = context.Users.FirstOrDefault(u => u.UserName == userName);                              
                if (user != null)
                {
                    var group = new Group();
                    group.GroupName = "test";
                    group.Members.Add(user);

                    context.Groups.Add(group);
                    context.SaveChanges();
                }
            }

            return View();
        }

应该只创建指定了组名的组。我的ajax和jquery代码是:

$(function () {
    $('#CreateGroup').on("click", function () {
        var groupName = "testgroup";
        $.ajax({
            url: "/AjaxMethods/CreateGroup",
            type: "POST",
            data: JSON.stringify({ 'GroupName': groupName }),
            dataType: "json",
            cache: false,
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                alert("success");
            },
            error: function () {
                alert("An error has occured!!!");
            }
        });
    });
});

它总是返回"发生错误!!!"信息。此外,对于这个问题,如果没有创建组,如何将其设置为始终作为错误返回(可能有原因,即组名已经存在)。我不希望页面重定向...我应该使用JsonResult而不是ActionResult吗? 我是ajax的新手,大概一个小时左右所以解释而不仅仅是代码会非常有用!谢谢!

更新#1:新的CreateGroup

public JsonResult CreateGroup(String GroupName)
        {
            ApplicationUser user;
            var userName = User.Identity.Name;
            using (DAL.GDContext context = new DAL.GDContext())
            {
                user = context.Users.FirstOrDefault(u => u.UserName == userName);                              
                if (user != null)
                {
                    var group = new Group();
                    group.GroupName = GroupName;
                    group.Members.Add(user);

                    context.Groups.Add(group);
                    context.SaveChanges();
                }
            }
            string result = userName;
            return Json(result, JsonRequestBehavior.AllowGet);            
        }

1 个答案:

答案 0 :(得分:0)

您的ajax调用将以您使用它的方式接收视图的内容。如果您不想将结果呈现为标记,那么您可能希望将Json中的数据返回到您的ajax请求。

 string result="OK";
 return Json(result,JsonRequestBehavior.AllowGet);