在jQuery ajax数据中发送一个布尔值

Don*_*n P 9 php ajax jquery json boolean

我在Ajax调用中发送一些数据.其中一个值是布尔值设置为FALSE.它始终在Ajax调用的PHP脚本中被评估为TRUE.有任何想法吗?

$.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);
    }
}); 
Run Code Online (Sandbox Code Playgroud)

在vote.php中,在上面的Ajax中调用的脚本,我检查了布尔值:

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

$_POST['undo_vote'] == true条件总是得到满足.

Jef*_*vis 14

帖子只是文本,文本在php中评估为true.快速解决方法是发送零而不是假.您还可以在PHP中使用引号括起来.

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

然后你可以传入真/假文本.如果这是你喜欢的.


小智 5

您可以使用 JSON.stringify() 发送请求数据:

data : JSON.stringify(json)

并在服务器上对其进行解码:

$data = json_decode($_POST);