我正在尝试从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;
答案 0 :(得分:0)
在PHP中,使用json_decode()
将json.txt文件解析为PHP数组。然后,将新的$POST[]
变量附加到该数组上。最后,json_encode()
完整数组并重新写入文件。
另外,请确保对$_POST
数据进行一些验证,否则您可能会收到一些您从未希望用户输入的数据。
我不建议手工构建JSON对象/数组。
答案 1 :(得分:0)
使用$.getJSON()
。这种方式data
是JS对象而不是字符串。我还建议使用for循环而不是jQuery的each()