0

そこで、フォームで使用して mysql データベースにアクセスする jquery を学習しようとしています。フォームは次のとおりです。

<form class="loginform" id="loginform" name="loginform">
    <input type="email" id="login" name="login" placeholder="Login..." autofocus required /><br/>
    <input type="password" id="password" name="password" placeholder="Password..." required /><br/>
    <input type="submit" id="loginsubmit" name="loginsubmit" value="LOGIN"/><br/>
    <input type="submit" id="register" name="register" value="REGISTER"/><br/>
</form><!-- end loginform -->

私はJS関数を持っていて、その関数を使用して$.submit()おり、パラメーターとして定義された関数を介して、次のよう$.submit()に呼び出しています。$.ajax()

function validateLogin(){
  $('#loginform').submit(function() {      
    $.ajax({
      url: "./validateLogin.php", 
      processData: false,
      data: {
        login: $("#login").val(), 
        password: $("#password").val()
      }, 
      success: function (result){
        alert($('#login').val());
        alert(result);
      }
    });
  });
}

読み取り行に注意してください。最後に、url 設定processData: false, のメソッドによって呼び出される php スクリプトです。$.ajax()

<?php
$verified = FALSE;
$login = $_POST["login"];
$password = $_POST["password"];

$con = mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db(db, $con) or die(mysql_error());

$result = mysql_query("SELECT * FROM logins") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
  if ($row[login] == $login) {
    $verified = TRUE;
  }
}
?>

<html>
    <body>
        <?php echo($verified); ?>
    </body>
</html>

うまくいかないことがいくつかあります。フォーム データが URL に追加されることを除いて、何も起こりません (url は submit 後に次のようになります: http://localhost/index.htmlqlogin=aloginname&password=apassword&login=LOGIN、 name: 値ペアも追加されますなんらかの理由で送信ボタンをクエリ文字列に追加しました)、そして、HERE (データ設定を参照)を読んで、processData: falseこれが起こってはならないことを理解しています。

また、アラートを発生させることもできませんsuccess: function()(アラートをスローしようとしましbeforeSend: function()たが、どちらも発生しません。

私はちょっとjQueryを理解していますが、私は比較的新しいものではありませんが、私が書いたコードについて私が理解していることは、JS関数でフォームにイベントハンドラーをアタッチしているということです(? -要素ではありませんフォーム)、およびそのイベント ハンドラーが実行する関数で$.ajax()、データを URL に送信するメソッドを呼び出し、そのプロセスが正常に完了するsuccess:と、メソッドの設定で定義された関数を処理します$.ajax()。次に、phpスクリプトでmysqlに接続し、クエリを実行し、フォームからのログインがdbのエントリと一致するかどうかを確認し、一致する場合はブール値がtrueに変更され、最後にブール値が内部にエコーされます<html>タグですが、そのhtmlデータを表示する方法がわかりません。

一言で言えばそれが私の問題です。ご指導いただければ幸いです。上記のプロセスについて誤解がある場合は、お気軽に修正してください。再度、感謝します。

4

2 に答える 2

0
//hey try to use this server side php script

$logins = $_POST['login'];
$password = $_POST['password'];

$sqlquery = mysql_query("SELECT * FROM logins WHERE logins=$logins AND password=$password");
$numrow = mysql_num_rows($sqlquery);//check if exists or not

if($numrow > 0){
$verified =  "TRUE";
}
else{
$verified = "FALSE";
}
echo json_encode(array('verified'=>$verified));// echo out with json encode
//JS

$(document).ready(function(){
$("#loginbtn").click(function(){
$.ajax({
      type:'post',
      url:'validatelogin.php',
      data: {login: $("#login").val(), password: $("#password").val()},
      dataType:'json',
      success:function(data){

             alert(data.verified);
      }
});     
});

});
于 2012-06-07T09:35:32.083 に答える
0

注意すべき点がいくつかあります。

1- パス./validateLogin.phpが正しいことを確認してください。

2- 既に使用しているかどうかはわかりませんが、Web サイトの開発時にデバッグするための最もクールなアドオンであるFirebugを使用していない場合。文字通り何時間もの作業時間を節約し、javascript に関連するエラーを解決するのに役立ちます。

3- ajax の最も一般的な用途は、データの投稿または取り込みです。「 done」や「error 」などの単純な文字列、またはJSONなどのシリアル化されたデータ( JSONを参照) のいずれかです。配列またはオブジェクトを出力する必要がある場合は、PHP でjson_encode関数を使用します。

これはあなたが試すためのコードです。私にとってはうまくいきました。

PHP側

   $result = mysql_query("SELECT * FROM logins") or die(mysql_error());
   while ($row = mysql_fetch_array($result)) {
       if ($row[login] == $login) { 
         $verified = TRUE;
       }
   }
   if ($verified){
        echo 'TRUE';  // This could be anything you want, an array, an object, numbers or a string
   }else{
        echo 'FALSE';
   }

Javascript側

$(document).ready(function(){ // Everything is encapsuled in the ready function in order to wait for the page to load completely.
    $.ajax({
        url: './validateLogin.php', 
        type: 'POST',
        success: function(result){

            if(result == 'TRUE'){
                alert('Verified!');                         
            }else{
                alert('Not verified!');                             
            }

        }
    });
});

と タグも出力しようとしていたことは知っていますが、javascript と ajax は既存のレイアウトをスムーズに変更するためのものであることを思い出してください。したがって、リクエストに膨大な量の HTML コードを持ち込むのは望ましくありません。最初に HTML と PHP を使用してレイアウトを準備し、次に javascript と ajax を使用して、重要なデータまたはその場で変更する必要があるものだけを使用する必要があります。

于 2012-06-04T00:59:39.183 に答える