AJAX请求第二次提交帖子

时间:2016-09-29 09:19:01

标签: javascript php jquery sql ajax

我正在制作一个表单来发布数据,结合Ajax。以下是与之关联的所有代码。问题是,当填写表格并提交时,在第一次点击时它会执行XHR请求,并获得成功回拨,因此将按钮更改为完成!。

但结果不会出现在数据库中。再次单击“提交”按钮时,它会执行另一个要通过的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 个答案:

答案 0 :(得分:0)

<?php

==&GT;如果在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;
    } 

==&GT;现在这里如果$ 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();
        }

    }
}
?>