AJAX запрос сообщения на второй отправить

Я делал форму для публикации данных в сочетании с Ajax. Ниже приведен весь код, связанный с ним. Проблема в том, что при заполнении формы и отправке, при первом щелчке он делает запрос XHR, и get’s a success call back so изменяет кнопку на Done!.

Но результаты не отображаются в базе данных. При нажатии на кнопку отправить снова, он делает еще один запрос XHR, который получает через. Есть идеи, чем это может быть вызвано? Спасибо!

// Method for updating the post in User.php
    public function updatePost($id, $title, $content){
            $query1 = $this->conn->prepare("UPDATE posts SET post_title=:post_title, post_content=:post_content WHERE post_id=:post_id");
            $query1->bindparam(":post_title", $title);
            $query1->bindparam(":post_content", $content);
            $query1->bindparam(":post_id", $id);
            try {
                $query1->execute();
            } catch (Exception $e) {
                echo $e->getMessage();
            }

        } ?>
// Backend for the authenication and validation (where the form posts to)
<?php
    session_start();
    require_once("../User.php");
    $login = new User();
    $errors = [];
    $post_title = $_POST['post-title'];
    $post_content = $_POST['post-content'];
    $post_id = $_POST['post-id'];

    if( isset($post_title) && isset($post_content) && isset($post_id) ){
        if( empty($post_title) ){
            $errors[] = "The entered title is invalid in some way.";
        }
        elseif (empty($post_content)) {
            $errors[] = "The entered content is invalid in some way.";
        }
        elseif(empty($post_id)){
            $errors[] = "An internal error has occured, please contact the system administrator.";
        }
        else{
            try {
                if( !$login->updatePost($post_id, $post_title, $post_content) ){
                    echo "allrighty";
                }
                else{
                    echo "charliewegotaproblem";
                }
            } catch (Exception $e) {
                echo $e->getMessage();
            }

        }
    }

 ?>
// JS for the Ajax request itself
$("form").submit(function(evt){
    evt .preventDefault();
    var url         = $(this).attr("action");
    var formData    = $(this).serialize();

    $.ajax(url, {
        data: formData,
        type: "POST",
        success: function(response){
            if(response == "allrighty"){
                $(".update-submit").prop("value", "Done!")
            }
            else if (response == "charliewegotaproblem") {
                $(".update-submit").prop("value", "Something went wrong...")
            }
        }
    }); // Ajax OBJECT END;
});// Submit END

1 ответ

  1. <?php
    

    ==> Первое сообщение об успешном возврате, если запрос post update успешно выполнен в функции updatePost

    // Method for updating the post in User.php
    public function updatePost($id, $title, $content){
        $success = false;            // Here I changed the code 
            $query1 = $this->conn->prepare("UPDATE posts SET post_title=:post_title, post_content=:post_content WHERE post_id=:post_id");
            $query1->bindparam(":post_title", $title);
            $query1->bindparam(":post_content", $content);
            $query1->bindparam(":post_id", $id);
            try {
                $query1->execute();
        if($query1){ $success = true; }      // Here I changed the code 
            } catch (Exception $e) {
                echo $e->getMessage();
            }
        return $success;
        } 
    

    ==> Теперь здесь, если $login имеет возврат true чем только чем» allrighty » вернется

    // Backend for the authenication and validation (where the form posts to)
    
    session_start();
    require_once("../User.php");
    $login = new User();
    $errors = [];
    $post_title = $_POST['post-title'];
    $post_content = $_POST['post-content'];
    $post_id = $_POST['post-id'];
    
    if( isset($post_title) && isset($post_content) && isset($post_id) ){
        if( empty($post_title) ){
            $errors[] = "The entered title is invalid in some way.";
        }
        elseif (empty($post_content)) {
            $errors[] = "The entered content is invalid in some way.";
        }
        elseif(empty($post_id)){
            $errors[] = "An internal error has occured, please contact the system administrator.";
        }
        else{
            try {
                if($login->updatePost($post_id, $post_title, $post_content)){    // Here I changed the code 
                    echo "allrighty";
                }
                else{
                    echo "charliewegotaproblem";
                }
            } catch (Exception $e) {
                echo $e->getMessage();
            }
    
        }
    }
    ?>