0

私はajaxとphpでログインを構築しています。PHPコードで別のクラスを呼び出すまで、私のコードはうまく機能します。私のphpコードを死ぬとき、私はvar_dumpを入れてもintを取得します。本当にやりたいのでコメントアウトした私のphpコードを見ることができます

意見:

<body>
<p>&nbsp;</p>
 <div id="content">
  <h1>Login Form</h1>
 <form id="form1" name="form1" action="stack.php"  method="post">
<p>
  <label for="username">Username: </label>
  <input type="text" name="username" id="username" />
</p>
<p>
  <label for="password">Password: </label>
  <input type="password" name="password" id="password" />
</p>
<p>
  <input type="button" id="login" name="login" value="submit"/>
   </p>
  </form>
   <div id="message"></div>
  </div>
    <script type="text/javascript">
       $(document).ready(function(){
       $("#login").click(function(){
       var action = $("#form1").attr('action');
       var form_data = {
         username: $("#username").val(),
         password: $("#password").val(), 
         is_ajax: 1
    };
    $.ajax({
        type: 'POST',
        url: action,
        data: form_data,
        success: function(data){
            if(typeof(data) != 'undefined' && (data == 'success' || data == 'error')){
                if(data == 'success'){
                    $("#form1").slideUp('slow', function() {

                        $("#message").html("<p class='success'>You have logged in
                                      successfully!</p>");
                    });
                } else if(data == 'error'){
                    $("#form1").slideUp('slow', function() {
                        $("#message").html("<p class='error'>Invalid username and/or
                         password.</p>");
                    });
                }
            } else {
                console.log("här");
                console.log(data);
                $("#message").html("<p class='error'>Error to connect to server</p>");   
            }
        }
    });
    return false;
});
});
   </script>
  </body>
 </html>

PHP:

   class DologinHandler{  
    public function Login(){ 
     if(isset($_REQUEST['is_ajax']))
    {
        $username = $_REQUEST['username'];
        $password = $_REQUEST['password'];

      //  $UserHandler = new UserHandler();
        //$UserHandler -> controllDB($username,$password);
        if($username == 'demo' && $password == 'demo')
        {
            exit('success');
        } else {
            exit('error');
          }
      }
  }

 }
?>
4

2 に答える 2

0

あなたの投稿のコードがあなたが書いたすべての PHP コードである場合、それは何もしません。クライアントが「成功」または「エラー」を期待している場合、空の文字列を取得しているという事実が、エラー メッセージが表示される理由である可能性があります。

PHP では、クラスを宣言すると、そのクラスをインスタンス化するときにのみコードが実行されます。これを行うには、Waygood が彼の回答に書いた 2 行のコードを、stack.php ファイルの末尾に追加します。

<?php
/* All your PHP code */

$loginclass=new DologinHandler();
$loginclass->Login();

そして、良い習慣として、上記のコードにコンテンツが追加されていない場合は?>、一番下の を削除してください。これにより、かなりの手間を省くことができます。ただし、この問題には関係ありません。

于 2012-07-03T09:12:40.947 に答える
-1

試す

echo 'success';
return true;

それ以外の

exit('success');

また、関数の最後で、非 ajax ログインを処理する必要があります

stack.php は次のようにする必要があります:-

$loginclass=new DologinHandler();
$loginclass->Login();
于 2012-07-03T08:45:50.543 に答える