Почему отрабатывает только true?

Имеется такой код в контроллере Laravel:

public function put_in_favorites(Request $request)
$is_active = $request->get('is_active');      
    if ($is_active)
    {
       
            return 'this is true';
    }
    else
        {
            return 'this is false';
        }

Значение $is_active он получает из ajax-запроса:

$('.bpt-heart').on('click', function (){
        $(this).toggleClass('Active');
        let IsActive;
        if ($(this).hasClass('Active'))
        {
            IsActive = true;
        }
        else
        {
            IsActive = false;
        }
        dataId = this.getAttribute('data-id');
        // console.log(dataId);
    $.ajax({
        url: 'favorites',
        type: 'POST',
        headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
        data: {
            is_active: IsActive,
            data_id: dataId
        },
        success: function (data)
        {
            console.log(data);
        },
        error: function (err)
        {
            console.log('Error');
            console.log(err);
        }
    });
});

Однако у меня всегда возвращается this is true, хотя если возвращать $is_active он, как и требуется, меняется на true и false. Как сделать так, чтобы обрабатывались оба случая в контроллере в зависимости от переменной $is_active?


Ответы (2 шт):

Автор решения: Алексей Шиманский

Посмотрите то, что отправляется через Network в браузере. Скорее всего переменная передаётся в строком в виде. Поэтому она всегда true. Поэтому надо либо строгое сравнение делать, либо отправлять например непосредственно json либо отправлять 1/0.

https://ru.stackoverflow.com/a/701146/191482 - отладку на стороне сервера сделать тоже очень полезно

→ Ссылка
Автор решения: Салават

Вот решение:

if ($is_active == 'true')

он её воспринимает в строковом виде. Всем спасибо за ответы.

→ Ссылка