Javascript 您需要在ajax中使用两个调用—1个get和1个post,还是可以成功/失败地返回数据?
我有以下控制器方法:Javascript 您需要在ajax中使用两个调用—1个get和1个post,还是可以成功/失败地返回数据?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有以下控制器方法: public JsonResult CreateGroup(String GroupName) { ApplicationUser user; var userName = User.Identity.Name; using (DAL.GDContext context = new DAL.GDContext())
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函数在说“未捕获引用错误:未定义数据”时失败
我是否必须使用另一个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!!!");
}
});
注意:更新成功回调。尝试使用
类型:“GET”
数据可能是“未定义的”。您是否确定从ajax调用中获得了一个返回对象。你确定服务器正在接收你的帖子吗?你还做了什么调试?嗨,这篇文章肯定能用,但我不知道你是否也能在同一个调用中检索数据(即用户名)。。。这是我的问题:)再次感谢!请您解释一下xhr变量好吗?我假设状态就是请求的状态?另外,我总是在没有Json.Stringify()的情况下得到failiure,这就是我重新添加的原因——只是再次检查,没有它仍然会失败。尽管如此,更新成功功能仍能完美工作,谢谢!