簡體   English   中英

如何在Wordpress的同一頁面上提交Ajax表單

[英]how to submit ajax form on same page in wordpress

我是wordpress的新手,我想要一個自定義表單,因此我創建了此表單,用戶可以在其中輸入前端數據。 但是,當我提交此表單時,如果成功,在<div id="feedback"></div> ,將再次顯示整個頁面。 因為我獲得了ajax成功或錯誤功能中的所有“數據”。 如何僅獲取回聲中的數據?

<?php
/*
Template Name: Complain
*/
get_header();
?>

<?php

if($_POST['submit']) {
    global $wpdb;

    $complain_name = $_POST['complain_name'];  

    if($wpdb->insert(
            'wp_complain',
            array(
                'name'=>$complain_name                   
            )
        )==false) {
        echo 'Database insertion failed';
    }
    else {
        echo 'Database insertion successful';
    }
}
else {
    ?>
    <form action="" method="POST" role="form" class="form-horizontal">

           Name <input type="text" id="complain_name" class="form-control" name="complain_name" required="required" autocomplete="off"/>            

            <input class="btn btn-block" id="submit" type="submit" value="Submit" name="submit">

        <div id="feedback"></div>
    </form>

    <script>
        $(document).ready(function(e){

            $("form").on('submit',(function(e) {
                e.preventDefault();
                //heresome other functions for validation

                    formData =new FormData(this)
                    $.ajax({
                        url:'<?php echo content_url(); ?>/themes/abc/complain-detail.php',
                        type: "POST",
                        data: formData ,
                        contentType: false,
                        cache: false,
                        processData:false,
                        success: function(data)
                        {                               
                                $('#feedback').html(data)                               
                        },
                        error: function(data)
                        {
                            $('#feedback').html(data)
                        }
                    });
                }

            ));

        })
    </script>

    <?php
}
get_footer();
?>

使用die("...."); 而不是echo "...."; witch將在這一行停止您的PHP代碼,因此您的HTML將不會顯示。

if( isset($_POST["submit"]) && !empty($_POST["submit"]) ){

      if(inserted)
           die("Database insertion successful"); //PHP will stop here
      else
           die("Database insertion failed"); //or here

}

  //Your HTML won't be shown ...

 const form = document.querySelector(".form-horizontal"); const ajax = new XMLHttpRequest(); form.addEventListener("submit",function(e){ e.preventDefault(); let data = new ForData(); data.append("complain_name",document.querySelector(".form-control").value); ajax.open("POST",'<?php echo content_url(); ?>/themes/abc/complain-detail.php'); ajax.send(data); if (this.readyState == 4 && this.status == 200){ document.querySelector(".feedback").textContent = "Thanks for your feedback."; }else{ document.querySelector(".feedback").textContent = "Sorry,something when wrong,please try again later."; } }); 
  <form action="" method="POST" role="form" class="form-horizontal"> Name <input type="text" id="complain_name" class="form-control" name="complain_name" required="required" autocomplete="off"/> <input class="btn btn-block" id="submit" type="submit" value="Submit" name="submit"> <div id="feedback"></div> </form> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM