如何修复调用php文件中函数的ajax请求?

如何修复调用php文件中函数的ajax请求?,php,html,ajax,Php,Html,Ajax,我是PHP新手,正在创建登录系统,ajax请求似乎无法在PHP文件中调用正确的函数 Javascript函数: function register () { var form = $(".form"); $.ajax({ type: "POST", url: "../app/actions.php", data: form.serialize(), success: function(response) { alert("request suce

我是PHP新手,正在创建登录系统,ajax请求似乎无法在PHP文件中调用正确的函数

Javascript函数:

function register () {
var form = $(".form");

$.ajax({
    type: "POST",
    url: "../app/actions.php",
    data: form.serialize(),
    success: function(response) {
        alert("request sucess");
    },
    fail: function(xhr, textStatus, errorThrown){
        alert("request failed");
    }
});
}
PHP文件actions.PHP:

    <?php

    require_once "config.php";
    require "login.php";
    require "logout.php";
    require "register.php";
    require "resetpassword.php";

    if(isset($_POST['action']) && !empty($_POST['action'])) {
        $action = $_POST['action'];

        switch($action) {
            case 'register' : register();break;
            case 'login' : login();break;
            case 'resetpassword' : resetpassword();break;
        }
    }

    ?>

PHP文件app/register.PHP:

    <?php

function register() {

    $name = $username = $password = "";

    if(empty(trim($_POST["name"]))){
        $name_err = "Please enter a name.";
    } else {
        $param_name = trim($_POST["name"]);
        $name = trim($_POST["name"]);
    }

    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter a username.";
    } else{
        $sql = "SELECT id FROM users WHERE username = ?";
        $stmt = mysqli_prepare($link, $sql);

        if($stmt){
            mysqli_stmt_bind_param($stmt, "s", $param_username);

            $param_username = trim($_POST["username"]);

            if(mysqli_stmt_execute($stmt)){
                mysqli_stmt_store_result($stmt);

                if(mysqli_stmt_num_rows($stmt) == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }

        mysqli_stmt_close($stmt);
    }

    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 8){
        $password_err = "Password must have at least 8 characters.";
    } else{
        $password = trim($_POST["password"]);
    }

    if(empty($name_err) && empty($username_err) && empty($password_err)){
        $sql = "INSERT INTO users (name, username, password) VALUES (?, ?, ?)";

        if($stmt = mysqli_prepare($link, $sql)){
            mysqli_stmt_bind_param($stmt, "sss", $param_name, $param_username, $param_password);

            $param_name = $name;
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT);

            if(mysqli_stmt_execute($stmt)){
                header("location: login.php");
            } else{
                echo "Something went wrong. Please try again later.";
            }
        }

        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
</head>
<body>
    <div class="wrapper">
        <h2>Register</h2>
        <p>Please fill this form to create an account.</p>
        <form class="form" onsubmit="register()">
            <div class="form-group">
                <label>Name</label>
                <input type="text" name="name" class="form-control">
                <span class="help-block">Please enter a name.</span>
            </div>     
            <div class="form-group">
                <label>Username</label>
                <input type="text" name="username" class="form-control">
                <span class="help-block">Please enter a username.</span>
            </div>
            <div class="form-group">
                <label>Password</label>
                <input type="password" name="password" class="form-control">
                <span class="help-block">Please enter a password which must have 8 characters or more, including at least one number and one letter.</span>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Submit">
                <input type="reset" class="btn btn-default" value="Reset">
            </div>
            <p>Already have an account? <a href="login.php">Login here</a>.</p>
        </form>
    </div>    
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
    <script type="text/javascript" src="scripts/app.js"></script>
</body>
</html>

PHP文件register.PHP:

    <?php

function register() {

    $name = $username = $password = "";

    if(empty(trim($_POST["name"]))){
        $name_err = "Please enter a name.";
    } else {
        $param_name = trim($_POST["name"]);
        $name = trim($_POST["name"]);
    }

    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter a username.";
    } else{
        $sql = "SELECT id FROM users WHERE username = ?";
        $stmt = mysqli_prepare($link, $sql);

        if($stmt){
            mysqli_stmt_bind_param($stmt, "s", $param_username);

            $param_username = trim($_POST["username"]);

            if(mysqli_stmt_execute($stmt)){
                mysqli_stmt_store_result($stmt);

                if(mysqli_stmt_num_rows($stmt) == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }

        mysqli_stmt_close($stmt);
    }

    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 8){
        $password_err = "Password must have at least 8 characters.";
    } else{
        $password = trim($_POST["password"]);
    }

    if(empty($name_err) && empty($username_err) && empty($password_err)){
        $sql = "INSERT INTO users (name, username, password) VALUES (?, ?, ?)";

        if($stmt = mysqli_prepare($link, $sql)){
            mysqli_stmt_bind_param($stmt, "sss", $param_name, $param_username, $param_password);

            $param_name = $name;
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT);

            if(mysqli_stmt_execute($stmt)){
                header("location: login.php");
            } else{
                echo "Something went wrong. Please try again later.";
            }
        }

        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
</head>
<body>
    <div class="wrapper">
        <h2>Register</h2>
        <p>Please fill this form to create an account.</p>
        <form class="form" onsubmit="register()">
            <div class="form-group">
                <label>Name</label>
                <input type="text" name="name" class="form-control">
                <span class="help-block">Please enter a name.</span>
            </div>     
            <div class="form-group">
                <label>Username</label>
                <input type="text" name="username" class="form-control">
                <span class="help-block">Please enter a username.</span>
            </div>
            <div class="form-group">
                <label>Password</label>
                <input type="password" name="password" class="form-control">
                <span class="help-block">Please enter a password which must have 8 characters or more, including at least one number and one letter.</span>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Submit">
                <input type="reset" class="btn btn-default" value="Reset">
            </div>
            <p>Already have an account? <a href="login.php">Login here</a>.</p>
        </form>
    </div>    
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
    <script type="text/javascript" src="scripts/app.js"></script>
</body>
</html>

登记
登记
请填写此表格以创建帐户

名称 请输入一个名称。 用户名 请输入用户名。 密码 请输入一个必须包含8个或更多字符的密码,其中至少包括一个数字和一个字母。 已经有账户了吗

我已经试着调试了它,但它似乎没有到达actions.php文件中的if语句


你知道这有什么问题吗

原来我在html中使用了Jquery Slim构建。需要使用普通的Jquery。已修复。

isset($\u POST['action']
…在html表单中,您没有任何名为“action”的元素。@ChukwuemekaInya是正确的,但如果Ajax不起作用,将不会有任何请求。需要执行此操作以及我下面的回答。谢谢:)事实上,经过数小时的研究,很难找到这个问题(希望有一天这能帮助别人!