来自jQuery Ajax的Bool参数在PHP中作为文字字符串“false”/“true”接收
这个问题与以下方面有关:
无法使用 jQuery AJAX 将 null 传递给服务器。在服务器上接收的值为字符串“null”
但我再次问这个问题,因为这个问题的解决方案非常丑陋,我认为一定是一个更好的解决方案。
问题
当您使用jQuery Ajax将数据发送到PHP使用POST时,您得到字符串“false”(字符串)而不是false(bool),“true”而不是true(bool),“null”而不是NULL:
解决方案
(在上面的问题中提出):在使用jQuery发送数据之前将数据转换为JSON,然后在PHP中解码该数据。使用代码:
Javascript 代码:
$.ajax
(
{
url : <server_url>,
dataType: 'json',
type : 'POST',
success : receiveAjaxMessage,
data : JSON.stringify
(
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
)
}
);
PHP 代码:
var_dump(json_decode(file_get_contents('php://input'), true));
对我来说,这不是一个解决方案,只是一个丑陋的黑客。
在我的情况下,问题是我不能使用file_get_contents('php://input')来访问$_POST,甚至更多,我不能使用$_POST因为我使用的是HMVC。
我知道我可以修复它,检查PHP中的“false”,“true”和“null”,或者在jQuery中发送1和0的instear true和fals。
但我认为这一定是一个非常普遍的问题,而jQuery是一个非常常见的框架,所以我非常确定在jQuery中有一种更好,更优雅的方式来发送具有正确类型的数据。