我有一个墙/社交系统(很像 facebook),其中有状态,但我希望能够在不重新加载页面的情况下对状态进行喜欢、不喜欢和评论,使用下面的表格我如何完成此操作?
if(empty($_GET['action'])){
postupdate();
if(isset($_POST['sComment'])){
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$comment = mysqli_real_escape_string($dbc, trim($_POST['comment']));
$sid = mysqli_real_escape_string($dbc, trim($_POST['sID']));
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = "INSERT INTO comments (`user`, `post`, `time`, `content`) VALUES ('".$_SESSION['user_id']."', '$sid', NOW(), '$comment')";
$data = mysqli_query($dbc, $query);
}
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = "SELECT posts.*, user.* FROM posts JOIN user ON user.user_id = posts.user_id JOIN friends ON friends.user = ".$userinfo['id']." AND friends.with = posts.user_id ORDER BY posts.post_id DESC";
$data = mysqli_query($dbc, $query);
while($row = mysqli_fetch_array($data)){
echo'<div class="shadowbar">
<div class="postedBy"><b> Posted by <a href="index.php?action=user&u='.$row['user_id'].'" class="btn-link">'. $row['firstname'] .' '. $row['lastname'] .'</a> On '. date('M j Y g:i A', strtotime($row['postdate'])) .'</b></div>';
$parsed = $parser->parse($row['post']);
echo '<pre>'.$parsed.'</pre>
<hr>
<form method="post" action="index.php" class="commentForm">
<fieldset>
<div class="input-group">
<textarea cols="150" rows="1" style="resize: none;" placeholder="Comment..." class="form-control" type="text" id="commentBox" name="comment"></textarea>
</div>
<input type="hidden" value="'.$row['post_id'].'" name="sID">
</fieldset>
<input class="Link LButton" type="submit" value="Add comment" name="sComment" />
</form>
</div>';
}
echo '</div>';
}
可以更改表单以适应代码。我假设我需要使用 JavaScript。
最佳答案
这里有一些代码可以帮助您入门。
首先,添加 ID 或类以便轻松识别表单:
<form method="post" action="index.php?action=comment" class='commentForm'>
既然你标记了 jQuery,我将使用它:
$(document).on('submit', '.commentForm', function(e) {
e.preventDefault(); // Prevents the default page reload after form submission
$.ajax({
type: $(this).prop('method'),
url: $(this).prop('action'),
data: $(this).serialize()
}).done(function() {
// Do something after it submits
alert('Thanks for the comment!');
}).fail(function() {
// There was an error
alert('An error occurred');
});
});
您可以阅读有关 jQuery.ajax
的更多信息在 jQuery 文档中。
关于javascript - 使用 javascript 提交表单数据(无需重新加载页面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25377363/