我是php,JSON和js的新手
我的问题是我的php以某种方式接收来自js的unquote json字符串
我已经通过函数JSON.stringify
传递了json字符串。我得到一个带引号
这是我的js脚本:
function post()
{
var test1 = {
name:"marzzuq",
age:16
};
myjson = JSON.stringify(test1);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","post.php",true);
xmlhttp.setRequestHeader("Content-type","application/json");
xmlhttp.send(myjson);
console.log("\nsend ok: " + myjson);
}
我从console.log得到这个
send ok: {"name":"marzzuq","age":16}
这是我的php脚本:
<?php
$rawdata = file_get_contents('php://input');
`echo $rawdata >> /tmp/test.txt`;
$JSON = json_decode($rawdata,true);
` echo test2 > /tmp/test.txt` ;
switch (json_last_error()) {
case JSON_ERROR_NONE:
`echo ' - No errors' >> /tmp/test.txt`;
break;
case JSON_ERROR_DEPTH:
`echo ' - Maximum stack depth exceeded' >> /tmp/test.txt`;
break;
case JSON_ERROR_STATE_MISMATCH:
`echo ' - Underflow or the modes mismatch' >> /tmp/test.txt`;
break;
case JSON_ERROR_CTRL_CHAR:
`echo ' - Unexpected control character found' >> /tmp/test.txt`;
break;
case JSON_ERROR_SYNTAX:
`echo ' - Syntax error, malformed JSON' >> /tmp/test.txt`;
break;
case JSON_ERROR_UTF8:
`echo ' - Malformed UTF-8 characters, possibly incorrectly encoded' >> /tmp/test.txt`;
break;
default:
`echo ' - Unknown error' >> /tmp/test.txt`;
break;
}
?>
在函数结束时,当我访问/tmp/test.txt时,我得到了这个:
{name:marzzuq,age:16}
为什么我得到一个非引号字符串?我应该得到引用字符串正确吗?这样的事情:
{"name":"marzzuq","age":16}
答案 0 :(得分:-1)
正如@phil所说,
似乎我得到unquote字符串的原因是因为我尝试使用执行运算符+使用echo保存到文件中。我应该使用file_put_contents
来保存输入接收,以保留格式。