如何在AJAX中控制失败函数?

12 浏览
0 Comments

如何在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("只有注册会员才能使用我们的点赞系统,请注册以便使用我们的点赞系统!");

}

当我测试我的代码时,它工作得很好,但它总是返回成功的值,而在我的代码中,唯一应该返回到成功的是更新点赞数,否则所有消息都应该显示在:

我该如何控制我要返回到失败或成功的内容?

0
0 Comments

如何在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请求中控制失败函数的处理。

0