PHP从js接收unquote json字符串

时间:2018-01-22 04:34:00

标签: javascript php json

我是php,JSON和js的新手 我的问题是我的php以某种方式接收来自js的unquote json字符串 我已经通过函数JSON.stringify传递了json字符串。我得到一个带引号

的普通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}

1 个答案:

答案 0 :(得分:-1)

正如@phil所说, 似乎我得到unquote字符串的原因是因为我尝试使用执行运算符+使用echo保存到文件中。我应该使用file_put_contents来保存输入接收,以保留格式。