将数组保存到json中

时间:2014-03-26 21:31:43

标签: php jquery json

我正在尝试从JSON文件创建一个表单,我可以使用它来存储设置,以便开箱即用我可以拥有看起来像数据库驱动的东西,但实际上是文件驱动的,然后可以用来设置数据库和其他设置。我越来越接近,但无法弄清楚如何提交表格并保留每一行。正如您从JSON.txt中看到的,我有一组数组,我想保存所有内容并能够添加新行。

我知道数据库驱动会更容易,但是我想在安装过程中使这个白痴,只有问题是一个白痴正在设置它:)需要有更多经验的人来帮助我。

JSON.txt:

[
    {"Setting_Index":"Server Name","Setting_Value":"server.com"},
    {"Setting_Index":"Username","Setting_Value":"name"}
]

Jquery Part:

     <script type="application/javascript">

   var indexValue = 0;
   function existingRow(S_ID, S_NAME){
        var existingRow ='<tr><td>Setting Name</td><td><input type="text" id="Setting_Index" value="'+S_ID+'"></td><TD>Value</td><td><input type="text" id="Setting_Value" value="'+S_NAME+'"></td></tr>';
        $("#applyTable").append(existingRow);
        }
   function addRow(S_ID, S_NAME){
        var addRow ='<tr><td>Setting Name</td><td><input type="text" id="Setting_Index" value=""></td><TD>Value</td><td><input type="text" id="Setting_Value" value=""></td></tr>';
        $("#applyTable").append(addRow);
        }

function populateRow(foo){
    $(foo).each(function(i, v){
    existingRow(v.Setting_Index, v.Setting_Value);
    });
}
//Get json data from file to be used in functions above
$.get( "./json/load.json", function( data ) {
populateRow( data );
});
</script>

HTML:

<table width=400>
<tr><th>Setting</th><th>Value</th></tr>
</table>

<form action="" method="POST" id="saveSettings">
<table class="myTable" border="1px" style="width:400px;"  >
<tbody id="applyTable"> 
</tbody>
</table>
<input type="text" name="Setting_Index" value="test">
<input type="text" name="Setting_Value" value="test">
<input type="submit" name="Update" id="update"/>
<input type="button" value="Add" border="1px" onclick="addRow()" />
</form>

Functions.php(试图在表格动作中使用它,已经进入了几个圈子)

$data = $_POST;
// $data is the posted data
// do what you want with it
$post_data = json_encode($data, JSON_FORCE_OBJECT);
$json_data = "[";
$json_data .= $post_data;
$json_data .= "]";
file_put_contents("./json/save.json.test", $json_data);
echo $json_data;

2 个答案:

答案 0 :(得分:0)

在PHP中,使用json_decode()将json.txt文件解析为PHP数组。然后,将新的$POST[]变量附加到该数组上。最后,json_encode()完整数组并重新写入文件。

另外,请确保对$_POST数据进行一些验证,否则您可能会收到一些您从未希望用户输入的数据。

我不建议手工构建JSON对象/数组。

答案 1 :(得分:0)

使用$.getJSON()。这种方式data是JS对象而不是字符串。我还建议使用for循环而不是jQuery的each()