你需要使用两个电话 – 在ajax中获得1个和1个post,还是可以通过成功/失败发回数据?

我有以下控制器方法:

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); } with the following ajax call: $(function () { $('#CreateGroup').on("click", function () { var groupName = $('#groupname').val(); if (groupName != '') { $.ajax({ url: '@Url.Action("CreateGroup","AjaxMethods")', type: "POST", data: JSON.stringify({ 'GroupName': groupName }), dataType: "json", cache: false, contentType: "application/json; charset=utf-8", success: function (data) { alert("success"); CreateGroup(data); }, error: function () { alert("An error has occured!!!"); } }); } }); 

CreateGroup函数失败,说“未捕获的ReferenceError:数据未定义”

我是否必须使用另一个Json请求 – 输入post – 来获取用户名?

你可以在不使用JSON.stringify的情况下进行调用。 此外,您的控制器方法具有可以产生更多控制的缓存属性。 就个人而言,我会使用控制器缓存控制。 您可能在返回数据之前获得了控制器调用的缓存版本。

  [OutputCache(NoStore = true, Duration = 0)] public ActionResult CreateGroup(string GroupName) $.ajax({ url: '@Url.Action("CreateGroup","AjaxMethods")', type: "POST", data: { 'GroupName': groupName }, dataType: "json", traditional: true, success: function (data, status, xhr ) { alert("success"); CreateGroup(data); }, error: function () { alert("An error has occured!!!"); } }); 

注意:更新成功回调。