Отправить логическое значение в данных jQuery ajax

Я отправляю некоторые данные в вызов Ajax. Одним из значений является логическое множество, равное FALSE. Он всегда оценивается как TRUE в скрипте PHP, который называется Ajax. Есть идеи?

$.ajax({ type: "POST", data: {photo_id: photo_id, vote: 1, undo_vote: false}, // This is the important boolean! url: "../../build/ajaxes/vote.php", success: function(data){ console.log(data); } }); 

В vote.php, скрипте, который вызывается в вышеперечисленном Ajax, я проверяю значение boolean:

 if ($_POST['undo_vote'] == true) { Photo::undo_vote($_POST['photo_id']); } else { Photo::vote($_POST['photo_id'], $_POST['vote']); } 

Но условие $_POST['undo_vote'] == true встречается ВСЕГДА.

Related of "Отправить логическое значение в данных jQuery ajax"

Сообщение – это просто текст, и текст будет оцениваться как истинный в php. Быстрое исправить было бы отправить ноль вместо false. Вы также можете помещать кавычки вокруг своего истинного в PHP.

 if ($_POST['undo_vote'] == "true") { Photo::undo_vote($_POST['photo_id']); } else { Photo::vote($_POST['photo_id'], $_POST['vote']); } 

Затем вы можете передать истинный / ложный текст. Если это то, что вы предпочитаете.

Вы можете использовать JSON.stringify () для отправки данных запроса:

data : JSON.stringify(json)

и декодировать его на сервере:

$data = json_decode($_POST) ;

Вы можете использовать 0 и 1 для undo_vote и вводить их в php:

Сторона JS:

 undo_vote: 0 // false 

Серверная сторона:

 $undovote = (bool) $_POST['undo_vote']; // now you have Boolean true / false if($undovote) { // True, do something } else { // False, do something else }