401未经授权的问题

时间:2014-09-04 09:53:42

标签: javascript jquery ajax

我正在使用jQuery.get()方法

$.get('login.php', function(d, textStatus, jqXHR){
    //alert(jqXHR.status)
    var status = jqXHR.status; 
    if((status==200)||(status==202)){
        window.location.href = 'dashboard.html';
    }else if(status==401){
        alert('Error in login details')
    }else{
        alert('Unknown Error')
    }
});

工作正常。当200& 202,它将重新连接到仪表板页面。但除了200& 202,它在控制台中传递错误,但不显示警告。

2 个答案:

答案 0 :(得分:3)

您需要为fail状态添加一些事件处理程序,这将处理4xx和5xx错误。 success状态仅处理指示成功请求的HTTP代码。来自http://api.jquery.com/jQuery.get

var jqxhr = $.get( "example.php", function(data, status) {
  alert( "success - " + status );
})
.done(function(data, status) {
  alert( "second success - " + status );
})
.fail(function(data, status) {
  alert( "error - " + status );
})
.always(function(data, status) {
  alert( "finished - " + status );
});

答案 1 :(得分:1)

这是因为您定义的回调函数仅在成功请求完成时调用。如果响应不是200,则认为该请求有错误。要执行您需要的操作,您可以使用$.ajax()方法:

$.ajax({
    url: 'login.php', 
    success: function() {
        window.location.assign('dashboard.html');
    }, 
    error: function(xhr) {
        if (xhr.status == 401) {
            alert('Error in login details')
        } else {
            alert('Unknown Error')
        }
   }
});