Почему отрабатывает только 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')
он её воспринимает в строковом виде. Всем спасибо за ответы.