我在一个Ajax调用中发送了一些数据。其中一个值是一个设置为TRUE的布尔值。在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
条件总是满足的。
4条答案
按热度按时间bz4sfanl1#
post只是文本,文本在php中的计算结果为true。一个快速的解决方法是发送一个0而不是false。你也可以在PHP中的true周围加上引号。
字符串
然后你可以传入true/false文本。如果你喜欢的话。
0x6upsns2#
你可以使用JSON.stringify()来发送请求数据:
第一个月
并在服务器上解码:
$data = json_decode($_POST)
;rks48beu3#
你可以在undo_vote中使用0和1,并在php中输入cast:
JS侧:
字符串
服务器端:
型
axr492tv4#
一个老问题,但也许这对JavaScript程序员有用:
我不想把 * 所有东西 * 都字符串化,因为我想要不带引号的数字和布尔值,带 * 一对 * 双引号的字符串,以及请求体中的对象。
jQuery Ajax不接受纯布尔值作为数据体,所以我这样做了:
字符串
对我有用...