PHP GET变量未设置

时间:2017-11-24 04:05:10

标签: javascript php jquery ajax html5

我有一个显示表单的registraion php类,当点击注册按钮时,会在登录javascript文件中调用一个函数。此文件使用ajax将数据发布到index.php文件。我的index.php文件无法访问此数据,尽管帖子成功(ajax成功,因为正在调用警报)。

Login.js

var loginData, urlPath;

// Allow users to log in or register
function Login() {

    loginData = "username=" + $("#usernameField").val() + "&email=" + $("#emailField").val() + "&password=" + $("#passwordField").val();
    urlPath = "../index.php?action=register";

    // Send the login/registration data to database
    $(document).ready(function() {
        $.ajax({
            type: "POST",
            url: urlPath,
            data: loginData,
            success: function (result) {
                alert("success");
            }
        })
    })
}

的index.php

<?php 

    require_once("Model/model.php");
    require_once("Controller/controller.php");
    require_once("View/view.php");

    $model = new Model();
    $view = new View();
    $controller = new Controller($model, $view);

    $controller->Begin();

    // Client wants to register
    if(isset($_GET['action'])) {
        if($_GET['action'] == "register") {
            echo '<script type="text/javascript">alert("hello")</script>';
        }
    }
?>

2 个答案:

答案 0 :(得分:2)

您使用了ajax的POST方法。因此也以POST方式发送数据,如下所示: -

// Send the login/registration data to database
$(document).ready(function() {
    var username = $("#usernameField").val();
    var email = $("#emailField").val();
    var password = $("#passwordField").val();
    $.ajax({
        type: "POST",
        url: "../index.php",
        data: {"username":username,"email":email,"password":password,"action":"register"},
        success: function (result) { 
            alert(result);//check the change 
        }
    });
});

然后在php结束时将GET更改为POST: -

<?php 

    require_once("Model/model.php");
    require_once("Controller/controller.php");
    require_once("View/view.php");

    $model = new Model();
    $view = new View();
    $controller = new Controller($model, $view);

    $controller->Begin();

    // Client wants to register
    //single condition can do the job and use POST instead of GET
    if(isset($_POST['action']) && $_POST['action'] == "register" ) { 
      echo "hello"; //check the change
    }
?>

注意: - 请注意评论。(在代码中添加)

答案 1 :(得分:0)

loginData = "username=" + $("#usernameField").val() + "&email=" + $("#emailField").val() + "&password=" + $("#passwordField").val() + "&action=" + "register";
urlPath = "../index.php";

$(document).ready(function() {
        $.ajax({
            type: "POST",
            url: urlPath,
            data: loginData,
            success: function (result) {
                alert("success");
            }
        })
    });

尝试在帖子数据中添加操作,并将其作为$ _POST

接收
if($_POST['action']) {
        if($_POST['action'] == "register") {
            echo '<script type="text/javascript">alert("hello")</script>';
        }
}
相关问题