簡體   English   中英

Ajax 不發送 POST 數據

[英]Ajax is not sending POST data

我正在制作一個注冊表單,其中腳本在通過 AJAX 使用的單獨文件中執行。

我已經嘗試通過執行<form action="assets/php/action.php?action=register method="post" id="registration-form">來直接使用該腳本,但是我想使用 AJAX這樣做的問題是,如果我使用 AJAX,POST 數據不會發送到 action.php 文件。

我試過調試我的代碼,但我找不到導致問題的原因。

我的注冊表:

<form action="#" method="POST" class="user" id="register-form">
                                <div id="regAlert"></div>
                                <div class="form-group row">
                                    <div class="col-sm-12 mb-3 mb-sm-0">
                                        <input type="text" name="name" id="name" class="form-control form-control-user"
                                            placeholder="Name" required> 
                                    </div>
                                </div>
                                <div class="form-group">
                                    <input type="email" class="form-control form-control-user" id="remail" name="email"
                                        placeholder="Email Address" required>
                                </div>
                                <div class="form-group row">
                                    <div class="col-sm-6">
                                        <div id="passError" class="text-danger font-weight-bold"></div>
                                    </div>
                                </div>
                                <div class="form-group row">
                                    <div class="col-sm-6 mb-3 mb-sm-0">
                                        <input type="password" class="form-control form-control-user"
                                            id="rpassword" name="password" placeholder="Password" required minlength="8">
                                    </div>
                                    <div class="col-sm-6">
                                        <input type="password" class="form-control form-control-user"
                                            id="cpassword" name="cpassword" placeholder="Repeat Password" required minlength="8">
                                    </div>
                                </div>
                                <input type="submit" value="Register Account" id="register-btn" name="register" class="btn btn-primary btn-user btn-block">
                                <hr>
                            </form>

我的 AJAX 腳本:(對非英文評論表示抱歉)

<script type="text/javascript">
    $(document).ready(function() {

        //Register Form Ajax Request
        $("#register-btn").click(function(e) { //Kui registreerimis nuppu vajutatakse, siis
            if($("#register-form")[0].checkValidity()) { //Kontrolli formi õigsust
                e.preventDefault();
                $("#register-btn").val('Creating Account...'); //Muudab registreerimis nupu teksti
                if($("#rpassword").val() != $("#cpassword").val()) { //Kui paroolid ei ole samad siis näitab errori
                    $("#passError").text('* Passwords did not match!'); //Paroolide mitte sama olemise error
                    $("#register-btn").val('Register Account'); //Muudab registreerimis nupu teksti
                } else { //Kui paroolid kattusid, siis
                    $("#passError").text(''); //Eemaldab paroolide mitte sama olemis errori kirja
                    $.ajax({
                        url: "assets/php/action.php",
                        method: 'POST',
                        data: $("register-form").serialize()+'&action=register',
                        success:function(data) {
                            $("#register-btn").val('Register Account'); //Muudab registreerimis nupu teksti
                            if(data === 'register') {
                                window.location = 'home.php';
                            } else {
                                $("#regAlert").html(data);
                            }
                        }
                    });
                }
            }
        });
    });
    </script>

我的 action.php 文件:

<?php

session_start();
require_once 'auth.php';
$user = new Auth();

if(isset($_POST['action'])) {
        if($_POST['action'] == 'register') {
        $name = $user->test_input($_POST['name']);
        $email = $user->test_input($_POST['email']);
        $pass = $user->test_input($_POST['password']);
        
        $hpass = password_hash($pass, PASSWORD_DEFAULT);
    
        echo $name;
        echo $email;
        echo $pass;
        if($user->user_exist($email)) { //Kontrollib kas selle meiliaadressiga on konto juba registreeritud, kui on siis
            echo $user->showMessage('warning', 'This email is already registered'); //Saadab inimesele kirja, et selle emailiga on konto juba registeeritud, 'warning' tähendab teate tüüpi, teine tekst on kiri, mida saadab
        } else { //Kui selle meiliaadressiga pole kasutajat veel registeeritud, siis
            if($user->register($name, $email, $hpass)) {
                echo 'register';
                $_SESSION['user'] = $email;
            } else {
                echo $user->showMessage('danger', 'Something went wrong! Please try again later or contact support.');
            }
        }
        print_r($_POST); //This only outputs that the action is register, no POST values are outputted
        die();
    }
}
?>

謝謝,尼梅圖。

不要使用 AJAX。 使用fetch代替,您不需要像 jQuery 這樣的外部庫,而且效率更高。 這是一個例子:

fetch('http://example.com/movies.json')
  .then(response => response.json())
  .then(data => console.log(data));

更多信息: https : //developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

暫無
暫無

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

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