如何使用TinyMCE,jQuery和PDO提交HTML表单?(完整代码)

Ene*_*oma 3 php pdo

$_POST['reply']变量包含html标签,<p>text goes here</p>但我无法将其插入数据库.因为reply我使用TinyMCE,当我不使用它(输入为无标签)时,text goes here它被正确插入.

我在这里错过了什么?

try {
    $db = new PDO(DB_DRIVER . ":dbname=" . DB_DATABASE . ";host=" . DB_SERVER, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $db->prepare("INSERT INTO replies(article_id, comment) VALUES (:article_id, :comment)");

    $stmt->bindParam(':article_id', $article_id, PDO::PARAM_INT);
    $stmt->bindParam(':comment', $_POST['reply'], PDO::PARAM_STR);


    if($stmt->execute()) {
      echo 'success';  
    }

    $db = null;
} catch(PDOException $e) {
    trigger_error('Error occured while trying to insert into the DB:' . $e->getMessage(), E_USER_ERROR);
}
Run Code Online (Sandbox Code Playgroud)

这是表单代码:

<form class="comment-form">
    <div class="form-input">
        <input type="hidden" name="post_id" value="<?= $row['id']; ?>" />
    </div>

    <div class="form-input">
        <textarea name="reply" id="elm1" rows="8"  placeholder="Your comment here" ></textarea>
    </div>

    <div class="form-input">
        <input type="Submit" class="btn btn-primary" id="submit" value="SEND" />
    </div>
</form>

<script type="text/javascript">
    $(function(){
        $(".comment-form").submit(function(event){
            event.preventDefault();
            $("#results")
                .show();

            $.post('add-it.php', $(".comment-form").serialize(), function(data) {
                $('#submit')
                    .hide();
                $('#results')
                    .html(data)
                    .fadeIn('slow');
            });
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

Yan*_*ang 6

由于您使用AJAX,您需要在TinyMCE中手动触发保存功能.在发送请求之前,需要完成这项工作.

 $("#results").show();
     tinyMCE.triggerSave(); // <--- Add this here
    $.post('add-it.php'....
Run Code Online (Sandbox Code Playgroud)

这绝对与PDO无关.print_r($_POST)在将记录插入表之前,您可以简单地查看是否有数据.