我注意到在AJAX调用(jQuery)中发送的变量作为类型:boolean被解释为服务器端的类型:string (PHP)。下面是我的代码摘录,以说明:
Ajax调用:
$.ajax({
url : 'model/script.php',
type : 'POST',
data : ref,
success : function (data){
...
}
});如果我在JS脚本中测试ref变量类型:
var ref_type = jQuery.type(ref);
alert(ref_type);
// Result : boolean如果我在PHP中测试$_POST['ref']类型:
if(isset($_POST['ref'])){
echo gettype($_POST['ref']);
}
// Result : string是否有发送/接收布尔变量的方法?还是必须在PHP脚本中转换变量?我可能错过了什么..。
发布于 2016-06-14 16:07:52
一个普通的post请求体(从技术上讲,一条x-www-form-urlencoded消息)只不过是文本。偶数就是文字。所有东西都是文本,因为最终这是浏览器发送和服务器接收的内容:
Name=John%20Smith&Age=35&Subscribed=true只需为true/false选择一个约定,并在服务器端代码中进行显式转换:
switch ($_POST['ref']) {
case 'yeah':
$ref = true;
break;
case 'nope':
$ref = false;
break;
default:
$ref = null;
}如果您选择一个PHP将正确识别的值集,当从字符串到布尔值的转换时,代码可以变得更简单:
$ref = (bool)$_POST['ref'];或者,您可以让PHP完成所有的艰苦工作:
$ref = filter_input(INPUT_POST, 'ref', FILTER_VALIDATE_BOOLEAN);或者,您可以使用纯文本来传输序列化的复杂数据结构,该结构支持复杂的数据类型,并且在客户端和服务器平台上都有编码器/解码器。典型的选择是JSON。
发布于 2016-06-14 15:21:53
您需要在PHP代码中转换变量,因为数据被转换成(一个)字符串并按其发送。
https://stackoverflow.com/questions/37815927
复制相似问题