AJAX请求帖子在第二次提交


AJAX request posts on second submit

我正在制作一个表单来发布数据,结合了Ajax。下面是与它相关的所有代码。问题是,当填写表单并提交时,在第一次单击时,它执行XHR请求,并获得成功回调,因此将按钮更改为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
<?php

==>第一个返回成功消息,如果post更新查询在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,那么"allright "将返回

// 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();
        }
    }
}
?>