我尝试将json对象保存到文件中,在这里,我有两个问题。
第一个是"我如何获得成功或错误状态,它代表写json数据。
下面是我的代码: $.ajax({
url: 'json.php',
type: "POST", // type should be POST
data: {
json: JSON.stringify(jsonData),
name: workerId+".json"
}, // send the string directly
dataType: "json",
success: function (response) {
alert(response['status']);
},
error: function (response) {
alert(response.status);
}
});
json.php:
<?php
header("Content-type: application/json");
$json = $_POST['json'];
$name = $_POST['name'];
$info = json_encode($json);
$file = fopen($name,'w+');
fwrite($file, $info);
fclose($file);
?>
第二个是:我找到了最终的输出。json文件中有一些不需要的字符,如'"
"{'"compartments'":[{'"id'":0,'"type'":'"M'",'"name'":'"cytosol'",'"x'":0.0734694,'"y'":0.36478122582308947,'"w'":0.646259,'"h'":1,'"children'":{'"complexs'":[{'"id'":8,'"type'":'"C'",'"x'":0.4442110000000001,'"y'":0.537736,'"w'":0.0252632,'"h'":0.0188679}......
然而,当我使用console.log(JSON.stringify(jsonData));我发现结果正是我想要的。
{"compartments":[{"id":0,"type":"M","name":"cytosol","x":0.0734694,"y":0.36478122582308947,"w":0.646259,"h":1,"children":{"complexs":[{"id":8,"type":"C","x":0.4442110000000001,"y":0.537736,"w":0.0252632, .....
那么我该如何解决这个问题,谢谢!
您从$_POST['json']
获得的数据已经在json格式。PHP将它作为字符串获取。通过再次调用json_encode,您只是json_encode一个字符串,而不是json数据,因为它永远不会被服务器解析。这将导致php引用字符串并转义任何现有的引号。因为你已经得到json,你不需要json_encode行,或者你可以json_parse $_POST['json']
,然后json_encode它再次。你的选择。
对数据进行了两次编码。首先,在Javascript中:
json: JSON.stringify(jsonData),
然后,在PHP中:
$info = json_encode($json);
您看到的结果是已经编码的字符串的编码版本。删除PHP中的json_encode()
调用:
$json = $_POST['json'];
$name = $_POST['name'];
$file = fopen($name,'w+');
if (fwrite($file, $json) === false)
{
// something went wrong
}
fclose($file);
注意,我们测试了fwrite()
的结果,看看它是否成功。