我有一个json文件,我想构建一个允许我在文件中添加/编辑元素的表单。是否有一个jQuery函数/方法,可以让我能够在外部json文件中发布和追加元素?
不确定这是否有用,但当前的json结构如下:
[ { "cast" : "",
"director" : "",
"genre" : "",
"id" : false,
"nrVotes" : 0,
"plot" : "",
"rating" : 0,
"runtime" : 0,
"title" : "",
"year" : false
},
{ "cast" : "Tim Robbins, Morgan Freeman, Bob Gunton, ",
"director" : "Frank Darabont",
"genre" : "Crime Drama ",
"id" : "0111161",
"nrVotes" : 968510,
"plot" : "Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.",
"rating" : 9.3000000000000007,
"runtime" : 142,
"title" : "The Shawshank Redemption",
"year" : "1994"
}]
答案 0 :(得分:5)
如果您使用的是jQuery的getJSON或parseJSON(),则可以使用javascript对象进行操作。例如:
$.getJSON( "/test.json", function( data ) {
// now data is JSON converted to an object / array for you to use.
alert( data[1].cast ) // Tim Robbins, Morgan Freeman, Bob Gunton
var newMovie = {cast:'Jack Nicholson', director:...} // a new movie object
// add a new movie to the set
data.push(newMovie);
});
您现在要做的就是保存文件。您可以使用jQuery.post()将文件发送回服务器以便为您保存。
更新:发布示例
//inside getJSON()
var newData = JSON.stringify(data);
jQuery.post('http://example.com/saveJson.php', {
newData: newData
}, function(response){
// response could contain the url of the newly saved file
})
在您的服务器上,使用PHP的示例
$updatedData = $_POST['newData'];
// please validate the data you are expecting for security
file_put_contents('path/to/thefile.json', $updatedData);
//return the url to the saved file
答案 1 :(得分:0)
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js" ></script>
</head>
<body>
<?php
$str = file_get_contents('data.json');//get contents of your json file and store it in a string
$arr = json_decode($str, true);//decode it
$arrne['name'] = "sadaadad";
$arrne['password'] = "sadaadad";
$arrne['nickname'] = "sadaadad";
array_push( $arr['employees'], $arrne);//push contents to ur decoded array i.e $arr
$str = json_encode($arr);
//now send evrything to ur data.json file using folowing code
if (json_decode($str) != null)
{
$file = fopen('data.json','w');
fwrite($file, $str);
fclose($file);
}
else
{
// invalid JSON, handle the error
}
?>
<form method=>
</body>
的 data.json 强>
{
"employees":[
{
"email":"11BD1A05G9",
"password":"INTRODUCTION TO ANALYTICS",
"nickname":4
},
{
"email":"Betty",
"password":"Layers",
"nickname":4
},
{
"email":"Carl",
"password":"Louis",
"nickname":4
},
{
"name":"sadaadad",
"password":"sadaadad",
"nickname":"sadaadad"
},
{
"name":"sadaadad",
"password":"sadaadad",
"nickname":"sadaadad"
},
{
"name":"sadaadad",
"password":"sadaadad",
"nickname":"sadaadad"
}
]
}