我尝试将我的JSON数据保存到文件中,但它只保存最后一个请求(我想每次都会覆盖我的general.json文件)。我想将所有请求添加到general.json。我的代码中的问题在哪里?
明天的ajax部分.php:
$(document).ready(function () {
var json = mg;
for (var i = 0; i < json.length; i++) {
$.ajax({
type:"GET",
url:"save_json.php",
contentType: "application/json",
dataType: "json",
async: false,
data: { data: JSON.stringify({
country: json[i][0],
competition: json[i][1],
club: json[i][2]}) },
success: function(){ alert("data")},
error: function(){ /*alert("error")*/}
});
}
});
还有save_json.php:
<?php
$myFile = "general.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["data"];
fwrite($fh, $stringData);
fclose($fh)
?>
和general.json文件的内容:
{"country":"America","competition":"Copa Americ","club":"Boca Juniors"}
为什么只保存最后一个请求?如何保存我的所有请求而不会每次覆盖general.json文件?
答案 0 :(得分:0)
替换它:
$fh = fopen($myFile, 'w') or die("can't open file");
有了这个:
$fh = fopen($myFile, 'a') or die("can't open file");
“w”选项会删除之前文件中的内容。 “a”选项将新内容附加到文件的末尾(并保留之前的内容)。
修改
要存储有效的json字符串,请按以下步骤操作:
<?php
$json = json_decode(file_get_contents("general.json")); // here you store the decoded content of your file in a variable
$json[] = $_GET["data"]; // You append the new data to the variable
file_put_contents("general.json", json_encode($json)); // And then, you encode the whole data and put it inside the file.
以下是有关file _ * _ contents函数的文档的链接(它们替换fopen,fwrite和fclose):
答案 1 :(得分:0)
$ fh = fopen($ myFile,&#39; w&#39;)或死亡(&#34;无法打开文件&#34;);
使用:
$fh = fopen($myFile, 'a') or die("can't open file");