Laravel和AJAX 401未经授权

Laravel和AJAX 401未经授权,ajax,laravel,laravel-5,Ajax,Laravel,Laravel 5,如何获取代码,以便在我的AJAX按钮单击代码出现401错误时,它要么在单击按钮时抛出错误消息并说“您需要登录”,要么重定向用户登录?目前,它只是在开发人员控制台中抛出错误,因此用户不知道为什么按钮不起作用 Ajax js: $('.visit').on('click', function (event) { event.preventDefault(); // Make the button a variable here var buttonToChange = $(this); $.ajax

如何获取代码,以便在我的AJAX按钮单击代码出现401错误时,它要么在单击按钮时抛出错误消息并说“您需要登录”,要么重定向用户登录?目前,它只是在开发人员控制台中抛出错误,因此用户不知道为什么按钮不起作用

Ajax js:

$('.visit').on('click', function (event) {
event.preventDefault();
// Make the button a variable here
var buttonToChange = $(this);
$.ajax({
    method: 'POST',
    url: urlVisit,
    data: {
        place_id: $(event.target).data("id"),
        _token: token
    },
    success: function(){
    // Change the button here
        if(buttonToChange.hasClass('btn-visited')){
            buttonToChange.addClass('btn-not-visited');
            buttonToChange.removeClass('btn-visited');
            buttonToChange.html('Not Visited');
        //Count will go down
        }
        else{
            // Do the opposite
            buttonToChange.addClass('btn-visited');
            buttonToChange.removeClass('btn-not-visited');
            buttonToChange.html('Visited');
//count will go up
        }
    },
});
简单例子 您可以通过浏览器中的
inspect
来测试此代码:

welcome.blade.php

    <script>
        var urlVisit="{{route('route_test')}}"
        var token = "{{csrf_token()}}"
        $.ajax({
            method: 'POST',
            url: urlVisit,
            data: {
                place_id: 1,
                _token: token
            },
            success: function (response) {
                alert('ok')

            },
            error: function (xhr, ajaxOptions, thrownError) {
                if (xhr.status == 419)
                {
                    alert(xhr.responseText) // text of error

                    // do something
                }
                else if(xhr.status == 401)
                {
                    // do something
                }

            }

        });
    </script>

您可以尝试jqueryajax的
statusCode
部分

$('.visit').on('click', function (event) {
event.preventDefault();
// Make the button a variable here
var buttonToChange = $(this);
$.ajax({
    method: 'POST',
    url: urlVisit,
    data: {
        place_id: $(event.target).data("id"),
        _token: token
    },
    statusCode: {
        401: function() {
            alert( "Not authenticated" );
        }
    }
success: function(){
// Change the button here
    if(buttonToChange.hasClass('btn-visited')){
        buttonToChange.addClass('btn-not-visited');
        buttonToChange.removeClass('btn-visited');
        buttonToChange.html('Not Visited');
    //Count will go down
    }
    else{
        // Do the opposite
        buttonToChange.addClass('btn-visited');
        buttonToChange.removeClass('btn-not-visited');
        buttonToChange.html('Visited');
//count will go up
    }
},
}); 

这是如何处理401未经授权的消息的。我知道这个信息是什么,我只想显示一条错误消息或重定向,而不是在收到此错误时不显示任何内容。在前端处理吗?是的,我想在前端处理401,方法是显示一条错误消息提示用户登录,或将他们重定向到登录页不,祝你好运,我的朋友,错误仍然显示,我在if-else中没有做任何更改
$('.visit').on('click', function (event) {
event.preventDefault();
// Make the button a variable here
var buttonToChange = $(this);
$.ajax({
    method: 'POST',
    url: urlVisit,
    data: {
        place_id: $(event.target).data("id"),
        _token: token
    },
    statusCode: {
        401: function() {
            alert( "Not authenticated" );
        }
    }
success: function(){
// Change the button here
    if(buttonToChange.hasClass('btn-visited')){
        buttonToChange.addClass('btn-not-visited');
        buttonToChange.removeClass('btn-visited');
        buttonToChange.html('Not Visited');
    //Count will go down
    }
    else{
        // Do the opposite
        buttonToChange.addClass('btn-visited');
        buttonToChange.removeClass('btn-not-visited');
        buttonToChange.html('Visited');
//count will go up
    }
},
});