Laravel и AJAX 401 Несанкционированные - PullRequest
0 голосов
/ 13 мая 2018

Как мне получить мой код, чтобы при появлении ошибки 401 с моим кодом нажатия кнопки AJAX он либо выдавал сообщение об ошибке при нажатии кнопки с сообщением «необходимо войти в систему», либо перенаправлял пользователя на авторизоваться? в данный момент он просто выдает ошибку в консоли разработчика, поэтому пользователь не знает, почему кнопка не работает.

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
        }
    },
});

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вы можете попробовать statusCode часть jQuery AJAX.

$('.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
    }
},
}); 
0 голосов
/ 13 мая 2018

простой пример

Вы можете проверить этот код с помощью 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>

web.php (маршрут):

use Illuminate\Http\Request;
Route::get('/', function () {
    return view('welcome');
});

Route::post('test', function (Request $request) {
    $place_id= $request->get('place_id');
    return ('yes');
})->name('route_test');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...