如何通过php脚本将项添加到现有的json文件中

时间:2017-01-07 05:51:53

标签: php jquery json ajax

如何使用AJAX将新数据写入.json文件,以通过php脚本使用其他数据更新.json文件。 假设我在JSON文件中有以下项目。

[{"task":"get milk","done":false},
{"task":"get broccoli","done":false},
{"task":"bring rian","done":false},
{"task":"go to school","done":false}]

现在我想从html页面添加一个项目     {"task":"buy milk","done":false}

我的html页面看起来像

Task:<input type="text" id="task" placeholder="what needs to be done?">
     <input type="button" value="ADD TASK" id="button">

如何通过jQuery中的php做到这一点?

3 个答案:

答案 0 :(得分:2)

我们可以先使用file_get_contents获取所有内容。

现在使用json_decode解码该数组。创建一个stdClass并创建匿名对象并分配通过AJAX请求获取的值。

以下示例可以帮助您在数组末尾创建和添加新对象。只需file_put_contents可以写回文件。

$array = json_decode('[{"task":"get milk","done":false},
    {"task":"get broccoli","done":false},
    {"task":"bring rian","done":false},
    {"task":"go to school","done":false}]', true);
$object = new stdClass();
$object->task = "milk";
$object->done = "false";
$array[] = $object;
$new_arr = json_encode($array);

您可以参考此https://jsfiddle.net/wvuu9ax6/

中的AJAX请求

答案 1 :(得分:0)

我首先将它们转换为数组:

$array = json_decode('[{"task":"get milk","done":false},
    {"task":"get broccoli","done":false},
    {"task":"bring rian","done":false},
    {"task":"go to school","done":false}]', true);

然后将新的附加到数组中:

$array[] = array(
  "task" => $_REQUEST["task"],
  "done" => false
);

然后我将它转换回JSON。

$json = json_encode($array);

一个问题是,当您这样做时,您没有正确传递task的值。您尚未在输入中指定name属性:

<input type="text" name="task" id="task" placeholder="what needs to be done?" />
//-----------------^^^^^^^^^^^

输出:http://ideone.com/G6yj5P

答案 2 :(得分:0)

你可以使用提交表单来获取这个,这里是post的代码,你也可以使用get方法。

PHP:

$tasks = json_decode(file_get_contents($taskFilePath), true);
$tasks[] =array("task" => $_POST["task"], "done" => $_post["done"]);
file_put_contents($taskFilePath, json_encode($tasks));