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

时间:2013-02-05 20:57:08

标签: php jquery ajax 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);
    }
}); 

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

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

但始终满足$_POST['undo_vote'] == true条件。

3 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:0)

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

$("selectClass").find('option').remove();

并在服务器上解码:

{{1}};

答案 2 :(得分:0)

你可以使用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 
}