我想将表单数据附加到json文件中,这是我的代码但是我不确定我做错了什么。每次我通过邮寄提交数据时,我都会收到错误回复。这段代码出错了什么?
HTML
<form class="ajax form-inline">
<div class="form-group">
<label for="exampleInputAmount">Yo, whats your first name?</label>
<div class="input-group">
<input type="text" class="form-control" id="fname" placeholder="First name">
</div>
</div>
<div class="form-group">
<label for="exampleInputAmount">&& Last name?</label>
<div class="input-group">
<input type="text" class="form-control" id="lname" placeholder="Last name">
</div>
</div>
<button type="submit" class="btn btn-primary">Submit to JSON</button>
</form>
JS / Jquery
$('form.ajax').on('submit', function(){
var $fname = $("#fname")
var $lname = $("#lname")
var object = {
firstname: $fname.val(),
lastname: $lname.val(),
}
var params = JSON.stringify(object);
$.ajax({
type: 'POST',
data: params,
dataType: "json",
url: 'save_to_json.php',
success: function(data) {
console.log('success');
},
error: function(data) {
console.log('error');
},
complete: function() {
console.log('complete');
}
});
return false;
e.preventDefault()
});
PHP / save_to_json.php
<?php
if (!isset($_POST['params']) && !empty($_POST['params'])) {
$params = $_POST['params'];
$jsonObject = json_encode($params);
file_put_contents('my_json_data.json', $jsonObject, FILE_APPEND);
}
else {
echo "Noooooooob";
}
?>
答案 0 :(得分:0)
首先,使用event.preventDefault()
方法停止提交表单。
以下是参考资料:
其次,在代码中使用var params = JSON.stringify(object);
毫无意义。
最后,删除此行dataType: "json",
,除非您期望json对象作为服务器的响应。 dataType
是您期望从服务器返回的数据类型。
所以你的jQuery脚本应该是这样的:
$(document).ready(function(){
$('form.ajax').on('submit', function(e){
e.preventDefault();
var $fname = $("#fname");
var $lname = $("#lname");
var params = {
firstname: $fname.val(),
lastname: $lname.val(),
}
$.ajax({
type: 'POST',
data: params,
url: 'save_to_json.php',
success: function(data) {
console.log('success');
},
error: function(data) {
console.log('error');
},
complete: function() {
console.log('complete');
}
});
return false;
});
});
这就是你处理AJAX请求的方法,
<?php
if (isset($_POST['firstname']) && isset($_POST['lastname'])) {
$params = array('firstname' => $_POST['firstname'], 'lastname' => $_POST['lastname']);
$jsonObject = json_encode($params);
file_put_contents('my_json_data.json', $jsonObject, FILE_APPEND);
}
else {
echo "Noooooooob";
}
?>
<强>编辑:强>
根据您的要求,您应该像这样处理AJAX请求:
<?php
if (isset($_POST['firstname']) && isset($_POST['lastname'])) {
$params = array('firstname' => $_POST['firstname'], 'lastname' => $_POST['lastname']);
$jsonObject = json_encode($params);
$json = file_get_contents('my_json_data.json');
if(empty($json)){
$jsonObject = json_encode(array('username' => [$jsonObject]));
file_put_contents('my_json_data.json', $jsonObject);
}else{
$json = json_decode($json, true);
$newJson = $json['username'][0] . "," . $jsonObject;
$jsonObject = json_encode(array('username' => [$newJson]));
file_put_contents('my_json_data.json', $jsonObject);
}
}
else {
echo "Noooooooob";
}
?>