首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax调用:发送布尔值,解释为php中的字符串

Ajax调用:发送布尔值,解释为php中的字符串
EN

Stack Overflow用户
提问于 2016-06-14 15:12:43
回答 2查看 78关注 0票数 0

我注意到在AJAX调用(jQuery)中发送的变量作为类型:boolean被解释为服务器端的类型:string (PHP)。下面是我的代码摘录,以说明:

Ajax调用:

代码语言:javascript
复制
$.ajax({
    url : 'model/script.php',
    type : 'POST',
    data : ref,
    success : function (data){
       ...
    }
});

如果我在JS脚本中测试ref变量类型:

代码语言:javascript
复制
var ref_type = jQuery.type(ref);
alert(ref_type);
// Result : boolean

如果我在PHP中测试$_POST['ref']类型:

代码语言:javascript
复制
if(isset($_POST['ref'])){
    echo gettype($_POST['ref']);
}
// Result : string

是否有发送/接收布尔变量的方法?还是必须在PHP脚本中转换变量?我可能错过了什么..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-14 16:07:52

一个普通的post请求体(从技术上讲,一条x-www-form-urlencoded消息)只不过是文本。偶数就是文字。所有东西都是文本,因为最终这是浏览器发送和服务器接收的内容:

代码语言:javascript
复制
Name=John%20Smith&Age=35&Subscribed=true

只需为true/false选择一个约定,并在服务器端代码中进行显式转换:

代码语言:javascript
复制
switch ($_POST['ref']) {
    case 'yeah':
        $ref = true;
        break;
    case 'nope':
        $ref = false;
        break;
    default:
        $ref = null;
}

如果您选择一个PHP将正确识别的值集,当从字符串到布尔值的转换时,代码可以变得更简单:

代码语言:javascript
复制
$ref = (bool)$_POST['ref'];

或者,您可以让PHP完成所有的艰苦工作:

代码语言:javascript
复制
$ref = filter_input(INPUT_POST, 'ref', FILTER_VALIDATE_BOOLEAN);

或者,您可以使用纯文本来传输序列化的复杂数据结构,该结构支持复杂的数据类型,并且在客户端和服务器平台上都有编码器/解码器。典型的选择是JSON。

票数 1
EN

Stack Overflow用户

发布于 2016-06-14 15:21:53

您需要在PHP代码中转换变量,因为数据被转换成(一个)字符串并按其发送。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37815927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档