私はJSの初心者です。以前はPHPに触れたことはありません。時間と数時間のためにSOを精練した後、私はこの部分を一緒に束ねました。私がしようとしているのは、JSONファイルに保存される2つのフィールドを持つ単純なフォームです。後続の各エントリをファイルの末尾に追加して、各JSONオブジェクトがその人の名前とそのコメントになるようにしたいと思います。Ajax> PHP> jsonにフォームデータを追加
以下のコードでは、何かをPHPスクリプトに渡し、jsonファイルにエントリを追加できました。しかし、どのようなJSONファイルに表示(2つのエントリの後に)これです:ここで
[{"data":"$data"},{"data":"$data"}]
は私のHTMLは
<form method="POST">
<!-- NAME -->
<div id="name-group" class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="name" placeholder="">
<!-- errors will go here -->
</div>
<!-- EMAIL -->
<div id="comment-group" class="form-group">
<label for="comment">Comment</label>
<input type="text" class="form-control" name="comment" placeholder="">
<!-- errors will go here -->
</div>
<button type="submit" class="btn btn-success">Submit <span class="fa fa-arrow-right"></span></button>
</form>
私のjqueryの
$(document).ready(function() {
// process the form
$('form').submit(function(event) {
// get the form data
// there are many ways to get this data using jQuery (you can use the class or id also)
var formData = {
'name' : $('input[name=name]').val(),
'comment' : $('input[name=comment]').val(),
};
// process the form
$.ajax({
type : 'POST', // define the type of HTTP verb we want to use (POST for our form)
url : 'data/save.php', // the url where we want to POST
data : formData, // our data object
})
// using the done promise callback
.done(function(data) {
// log data to the console so we can see
console.log(formData);
// here we will handle errors and validation messages
});
// stop the form from submitting the normal way and refreshing the page
event.preventDefault();
});
});
そして、私のPHP
<?php
if(!empty($_POST)){
$data = json_encode($_POST);
if(json_last_error() != JSON_ERROR_NONE){
exit;
}
$file = file_get_contents('comments.json');
$data = json_decode($file);
unset($file);
$data[] = array('data'=>'$data');
file_put_contents('comments.json',json_encode($data));
unset($data);
}
です
?>
ありがとうございます
を。行を扱う方法が分かりません – Aeromax
変数は二重引用符で囲まれ、一重引用符ではなく展開されています。ちょうど 'bash'と' perl'のように。 – Barmar
あなたは '$ data'を引用符で囲む必要は全くありません。 'array( 'data' => $ data)'を使用してください。 – Barmar