我试图将数据从输入添加到Actors.json本地文件。这是文件结构:
[
{
"FirstName": "Ricardo",
"Id": 1,
"LastName": "Darin"
},
{
"FirstName": "Bruce",
"Id": 2,
"LastName": "Willis"
}
]
这是输入:
<table>
<tr>
<td>Id:</td>
<td><input type="text" id="ID" /></td>
</tr>
<tr>
<td>First name:</td>
<td><input type="text" id="FirstName" /></td>
</tr>
<tr>
<td>Last name:</td>
<td><input type="text" id="LastName" /></td>
</tr>
<tr>
<td> </td>
<td><input type="button" value="ADD" onclick="AddActor()" /></td>
</tr>
</table>
这是我的addActor功能:
function AddActor(){
$.ajax({
url: 'save.php',
method: 'POST',
dataType: 'json',
data: JSON.stringify({'FirstName': $('#FirstName').val(),
'Id': $('#ID').val(),
'LastName': $('#LastName').val()}),
success: function () {alert("Thanks!"); },
error: function() {alert("Error!");}
});
}
但是我不知道在save.php文件中放什么,并尝试了几种方法,但没有保存演员。
答案 0 :(得分:3)
为表单添加名称属性:
<table>
<tr>
<td>Id:</td>
<td><input type="text" id="ID" name="ID" /></td>
</tr>
<tr>
<td>First name:</td>
<td><input type="text" id="FirstName" name="FirstName" /></td>
</tr>
<tr>
<td>Last name:</td>
<td><input type="text" id="LastName" name="LastName" /></td>
</tr>
<tr>
<td> </td>
<td><input type="button" value="ADD" onclick="AddActor()" /></td>
</tr>
</table>
更改AddActor()
功能:
function AddActor(){
$.ajax({
url: 'save.php',
method: 'POST',
data: $('input').serialize(),
success: function(result) {alert("Thanks!"); },
error: function(result) {alert("Error!");}
});
}
$().serialize
将格式化所有输入字段,例如查询字符串(name=val&name1=val1
格式)。
在save.php中:
<?php
// Adjust the actual location of the file relative
// to the location of the PHP script
$json_str = file_get_contents('Actors.json');
// Convert json string to PHP array
$json_arr = json_decode($json_str, true);
// Make sure this variable is set in case Actors.json is empty
if(!$json_arr) {
$json_arr = array();
}
// Add new data
$json_arr[] = $_POST;
// Encode back to json string and save
$json_str_done = json_encode($json_arr);
file_put_contents('Actors.json', $json_str_done);
答案 1 :(得分:2)
忘记JSON.stringify
,除非您出于其他原因需要它。只需使用:
data: {
firstName: $('#FirstName').val(),
lastName: $('#LastName').val(),
...
}
其中每一项都将提供:
$_POST['firstName']
,$_POST['lastName']
等
获得这些变量后,请查看file_put_contents或类似内容。