2017-11-24 21 views
1

フォームを表示するphpクラスregistraionがあります。登録ボタンをクリックすると、ログインjavascriptファイルの関数が呼び出されます。このファイルはajaxを使用してindex.phpファイルにデータを投稿します。私のindex.phpファイルは、投稿が成功したにもかかわらず、このデータにアクセスすることができません(警告が呼び出されると、ajaxの成功は真です)。ポストデータでも、アクションを追加することPHP GET変数が設定されていません

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

あなたはAjaxでpostメソッドを使用していますが、PHPでgetメソッドとして受け取りました –

+1

GETが使用されている理由は、URLからアクションを取得することです../index.php?action=register私は投稿を使用します私が後で必要とする投稿データを取得する – Oblivion

+0

これでprint_r($ _ POST);スクリプトの始めにちょうど、あなたは何を得るのですか? Chromeの "Inspect element - > Network"を使用して、ajaxリクエストを確認します。さらに、あなたのアクションをajaxのPOSTに置くこともできます。 –

答えて

2

あなたはajaxのPOSTメソッドを使用しました。 PHPの終わりにPOSTGETを変更後、

// 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 

    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 
    } 
?> 

注: - だから、以下のようなPOST方式でも、データを送信あまりにもコメントの世話をしてください(で追加。コード)

+0

これはうまくいきました。ありがとうございました。 – Oblivion

+1

@Jakeはあなたを助けることをうれしく思います:) :) –

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>'; 
     } 
} 
としてそれを受け取ります210
+0

うまく動作していないようですが、こんにちはアラートは呼び出されていません。 – Oblivion

+0

issetを削除してからもう一度やり直してください –

+0

"未定義のインデックス:アクション" – Oblivion

関連する問題