我使用ajax编写json文件。但文件显示格式不正确。
AJAX:
$.ajax
({
type: "GET",
dataType : 'json',
contentType: "application/json",
async: false,
url: 'save_json.php',
data: {
data: JSON.stringify(data)
},
success: function () {alert("Thanks!"); },
failure: function() {alert("Error!");}
});
SAVE_JSON.PHP:
<?php
$myFile = "profile.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["data"];
fwrite($fh, $stringData);
fclose($fh)
?>
它显示以下内容:
{"profile":[{"no":1,"firstName":"C","lastName":"D","age":25,"sex":"M","country":"US","phoneNumber":"019878736729","email":"johnsmith@example.com"},{"no":2,"firstName":"A","lastName":"B","age":28,"sex":"M","country":"VN","phoneNumber":"84928374839","email":"nguyentam@example.com"}]}
但我希望以正确的格式显示如下:
{
"profile": [
{
"no": 1,
"firstName": "C",
"lastName": "D",
"age": 25,
"sex": "M",
"country": "US",
"phoneNumber": "019878736729",
"email": "johnsmith@example.com"
},
{
"no": 2,
"firstName": "A",
"lastName": "B",
"age": 28,
"sex": "M",
"country": "VN",
"phoneNumber": "84928374839",
"email": "nguyentam@example.com"
}
]
}
有人能帮助我吗?
答案 0 :(得分:2)
让我们清楚一下这两部分以及各部分的作用。
JSON.stringify()
将其转换为JSON字符串。然后将它发送到您的PHP服务器。你有很多方法可以解决这个问题。例如,您可以将字符串转换回PHP端的对象并转储格式化版本:
$obj = json_decode($string_data,true);
$formatted_json = json_encode($obj, JSON_PRETTY_PRINT);
fwrite($fh, $formatted_json);
您也可以在JavaScript端进行此格式化,将您的JSON.stringify()
调用替换为带有其他参数的调用:
JSON.stringify(data,null,4)
null 表示您不打算使用替换器功能,而 4 是缩进漂亮打印的空间数。
您使用哪种方法取决于您以及您想要使用多少带宽(发送格式化版本会占用更多空间)。
但请记住,JSON解析器不使用这个额外空间 - 它是帮助您(或其他人)阅读它的所有格式。
(并且@Quentin在你的问题的评论中提出了一个很好的观点 - 在这种情况下使用“GET”是一个坏主意,原因很多。切换到“PUT”或者最坏的情况是“POST”。)