当我使用[Authorize]时,ajax调用MVC动作给出状态:200错误

时间:2013-05-15 07:39:46

标签: javascript ajax asp.net-mvc

这个ajax帖子在用户通过身份验证后工作正常,但对于uanauthenticated用户,我想使用[Authorize]重定向到login.Javascript代码如下所示...

 $("#favorite").click(function () {
     var favoriteText = $("#favorite").text();
     var status = 1;
     if (favoriteText == "Remove From Favorite") {
         status = 0;
     } else {
         status = 1;
     }
     $.ajax({
         url: '@Url.Action("AddFavorite", "MovieProfile")',
         data: {
             Status: status
         },
         dataType: 'json',
         type: "POST",
         success: function (data) {
             alert('sucsess');
             if (status == 1) {
                 $("#favorite").text("Remove From Favorite");
             } else {
                 $("#favorite").text("Add To Favorite");
             }
         },
         error: function (XMLHttpRequest, textStatus, errorThrown) {
             alert('readyState:' + XMLHttpRequest.readyState + ' status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText, +errorThrown);
         }
     });

 });

行动是......

[HttpPost]
[Authorize]
public ActionResult AddFavorite(int Status)
{
 //code goes here
}

但它在readyState:4状态:200,状态文本:OK。

时出错

1 个答案:

答案 0 :(得分:1)

由于这是一个Ajax调用,因此无法从服务器重定向。只有在直接请求时才能重定向。

如果您确实想在客户端重定向,可以在错误处理程序中执行此操作:

error: function (XMLHttpRequest, textStatus, errorThrown) {
     window.location = "/Login";
     alert('readyState:' + XMLHttpRequest.readyState + ' status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText, +errorThrown);
                }