我正在向我的服务器发送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));
}
答案 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