javascript - 使用 javascript 提交表单数据(无需重新加载页面)

标签 javascript php jquery forms

我有一个墙/社交系统(很像 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/

相关文章:

javascript - 如何修复 Accordion 内的文本区域自动增长

javascript - 使用 CLI 创建新项目后如何在 vue 3 中正确导入 Axios?

php - Ajax 实时插入双提交故障

php - Cakephp 3 newEntity() 不工作

php - MySQL真正的转义字符串

javascript - 可编辑元素,覆盖原始文本不起作用(x-可编辑)

javascript - PHP - 语言切换 - MVC 框架 - 基于 session 或 Javascript(i18next 库)?什么更好?

Javascript:如何检测内容可编辑的 div 中的某些字符

javascript - Angular2/ typescript : error TS2345: Argument of type 'String' is not assignable to parameter of type 'string'

c# - jquery 对话框内的 FileUpload,hasfile false