php file_put_contents写一个字符串而不是boolean

时间:2018-02-19 14:53:31

标签: php ajax

我正在向我的服务器发送ajax请求,并使用file_put_contents()将json文件值从true更新为false,反之亦然。该文件如下所示:

{
  "username": "admin",
  "nice_guy": false
}

当我使用file_put_contents() {@ 1}}写一个布尔值的nice_guy值时,在它周围用引号括起来:

{
  "username": "admin",
  "nice_guy": "true"
}

在客户端上,如果我console.log之前发送的值,我会看到这样的未加引号的值:

    {function: "update", nice_guy: true}
Here is the php code:

      if($_POST['nice_guy'] == true || $_POST['nice_guy'] == false){
      $prefs = json_decode(file_get_contents("users/".$_SESSION['email']."/prefs.json"),true);        
$prefs['nice_guy'] = $_POST['nice_guy'];
        file_put_contents("users/".$_SESSION['email']."/prefs.json",json_encode($prefs,JSON_NUMERIC_CHECK));       
      }

2 个答案:

答案 0 :(得分:0)

我的解决方案是将值存储为字符串,然后测试字符串的值以向客户端传递布尔值。所以这就是文件现在的样子:

{
  "username": "admin",
  "nice_guy": "true"
}

当我需要将它发送给客户端时,我正在测试它:

$prefs = json_decode(file_get_contents("users/".$_SESSION['email']."/prefs.json"),true);
$to_client = $prefs['nice_guy']==="true"?true:false;

答案 1 :(得分:0)

你可以这样做。您在JavaScript中对json数据进行字符串化,然后在PHP上将其解码为StdClass对象。这是你如何做到的

的index.html

<html>
    <head>
        //Load JQuery
    </head>
    <body>
        <input type='button' value='Send'/>
        <script>
            $('input').on('click', function() {
                $.post('test.php', {json: JSON.stringify({boolean: true })}, function(response) {});
            });
        </script>
    </body>
</html>

test.php的

<?php 
$json = json_decode($_POST['json']);
echo is_bool($json->boolean) ? 'Yes' : 'No';

输出:

Yes