我有一个程序,我可以在没有javascript的情况下添加数据。但我想使用AJAX,我不知道为什么它不起作用。当我单击添加按钮时,它确实没有发生任何事情,我没有在phpmyadmin中看到数据。任何人都可以帮助我吗?
的index.php:
session_start();
require_once("auth.php");
require_once("control.php");
<div class="well well-sm bs-component">
<div class="form-group row add">
<form method="post" action="">
<div class="col-md-12">
<label for="content" class="control-label">Your Comment</label>
<input type="hidden" name="uid" value="<?= $id; ?>">
<input type="hidden" name="date" value="<?= date('Y-m-d H:i:s') ?>">
<textarea id="content" name="content" class="form-control" rows="3" placeholder="Enter your comment..." required></textarea>
<p class="error text-center alert alert-danger hidden"></p>
</div>
<div class="addButton col-md-12">
<button class="btn" type="submit" id="add" name="add">
<span class="glyphicon glyphicon-plus"></span> SEND
</button>
</div>
</div>
</form>
</div>
control.php:
//ADD COMMENT
if ( isset($_POST['add']) ) {
$id = $_POST['uid'];
$date = $_POST['date'];
$content = $_POST['content'];
$sql= "INSERT INTO posts (uid, content, date) VALUES ('$id', '$content', '$date')";
if (!$mysqli->query($sql)) {
header("location: error.php");
}
}
使用Javascript:
$("#add").click(function() {
var formData = {
'name': $('#content').val()
};
$.ajax({
type: 'post',
url: 'control.php',
data: formData,
success: function(data) {
if ((data.errors)){
$('.error').removeClass('hidden');
$('.error').text(data.errors.name);
}
else {
$('.error').addClass('hidden');
$('#table').prepend("<div class='item" + data.id + " mess'><div class='btn-group-sm'><button class='edit-modal btn btn-circle' data-id=" + data.id + " data-name=" + data.name +"><span class='glyphicon glyphicon-pencil'></span></button><button class='delete-modal btn btn-circle' data-id=" + data.id + " data-name=" + data.name +"><span class='glyphicon glyphicon-trash'></span></button></div><article class='myMessage'><p>" + data.name + "</p></article></div><div class='clear' style='clear: both;''></div>");
}
},
});
$('#content').val('');
});
答案 0 :(得分:1)
您只发送此$_POST
数据:
var formData = {
'name': $('#content').val()
};
哪个应该只会导致$_POST['name']
=&gt; VALUE
但是你正在阅读$_POST['content'];
和其他变种。
您还要检查AJAX未发送的$_POST['add']
。
更改密钥,用于在一侧发送/读取数据,并尝试将其他键/值添加到数据中,例如
var formData = {
'add': 'yes',
'content': $('#content').val(),
'uid': SOMEVALUE,
'date': SOMEVALUE
};
uid
和date
是你可能想要在control.php中动态创建的东西。但是,请不要从$_POST
附加:使用与您的用例匹配的示例进一步阅读:https://scotch.io/tutorials/submitting-ajax-forms-with-jquery
答案 1 :(得分:0)
User.includes(:user_setting)
.where.not(user_settings: { id: nil })
.where(user_settings: { status: 'active' })