Ajax呼び出しでデータを送信しています。値の1つは、ブール値がFALSEに設定されています。 Ajaxによって呼び出されるPHPスクリプトでは常にTRUEと評価されます。何か案は? vote.phpでjQueryの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);
}
});
、上記のAjaxで呼び出されたスクリプトは、私がブール値チェック:
if ($_POST['undo_vote'] == true) {
Photo::undo_vote($_POST['photo_id']);
} else {
Photo::vote($_POST['photo_id'], $_POST['vote']);
}
をしかし$_POST['undo_vote'] == true
条件が常に満たされます。
あなたは 'もし($ _POSTを試してみました['undo_vote'] == 'true'){'? (JSONの文字列を渡して個々のプロパティをテストする前にサーバサイドで解析しない限り、リクエストパラメータが文字列として受け取られることを期待しています) – nnnnnn
はい、変数は文字列として送信されます。文字列 "false"のテストは常にtrueです。 – showdev
が正しいです。すべてのGET/POSTパラメータは文字列で、 '' false ''は真理値です。 –