Я отправляю некоторые данные в вызов 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
встречается ВСЕГДА.
Сообщение – это просто текст, и текст будет оцениваться как истинный в 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 }