如何在AJAX中控制失败函数?
如何在AJAX中控制失败函数?
我正在尝试处理AJAX中的失败函数,以向用户显示特定的消息。我已经尝试了大部分解决方案,但无法控制失败函数。以下是我的代码:
$("#Like").click(function () {
var myId = $(this).data('id');
$.ajax({
type: "GET",
url: '@Url.Action("Like", "Book")?Book_id=' + myId,
success: function (response) {
$("#Like").html(response);
},
error: function (xhr, status, error) {
$("#Likes").html(xhr.responseText).fadeIn('slow');
$("#Likes").delay(8000).fadeOut('slow');
}
});
});
另外,这是我的控制器代码:
[HttpGet]
public ActionResult Like(int? Book_id)
{
int state = 0;
if (User.Identity.IsAuthenticated)
{
var x = User.Identity.GetUserId();
var CheckIfExist = db.Likes.Where(p => p.Book_Id == Book_id && p.User_Id == x.ToString()).FirstOrDefault();
if (CheckIfExist != null)
{
return Content("您之前已经点赞了这本书!");
}
else
{
if (x != null)
{
var article = db.Books.Find(Book_id);
if (article != null)
{
article.Likes_Count += 1;
state = db.SaveChanges();
if (state == 1)
{
Like likes = new Like
{
Book_Id = article.Book_id,
User_Id = x
};
db.Likes.Add(likes);
state = db.SaveChanges();
if (state == 1)
{
return Content(" " + article.Likes_Count.ToString());
}
else
{
return Content("无法将您的点赞保存到数据库!");
}
}
else
{
return Content("无法将您的点赞保存到数据库!");
}
}
else
{
return Content("数据库中不存在该书籍!");
}
}
}
}
return Content("只有注册会员才能使用我们的点赞系统,请注册以便使用我们的点赞系统!");
}
当我测试我的代码时,它工作得很好,但它总是返回成功的值,而在我的代码中,唯一应该返回到成功的是更新点赞数,否则所有消息都应该显示在:
中
我该如何控制我要返回到失败或成功的内容?
如何在AJAX中控制失败函数?
问题的出现原因:
在上述代码中,点击".like-toggle"的元素后会触发AJAX请求,请求会发送到后端的C#控制器。控制器会根据请求返回一个JSON对象,其中包含了一个布尔值"success"和一个字符串"responseText"。根据返回的JSON对象,前端页面会进行相应的处理操作。
解决方法:
在AJAX的成功函数中,根据返回的JSON对象中的"success"属性进行判断。如果"success"为true,则将"responseText"的值赋给id为"Like"的元素的innerHTML属性;如果"success"为false,则将返回的字符串显示在id为"myElem"的元素上,并通过fadeIn和fadeOut效果进行显示和隐藏。
以下是解决方法的代码示例:
HTML代码:
$('.like-toggle').click(function () { var myId = $(this).data('id'); $.ajax({ type: "GET", url: '.Action("Like", "Book")?Book_id=' + myId, success: function(resp) { if(resp.success) { document.getElementById("Like").innerHTML = resp.responseText; } else { $('#myElem').html(resp).fadeIn('slow'); $('#myElem').delay(8000).fadeOut('slow'); } }, }); });
C#控制器代码:
return Json(new { success = true, responseText = value.ToString() }, JsonRequestBehavior.AllowGet);
通过以上代码,我们可以实现在AJAX请求中控制失败函数的处理。