PHP と MySQL で JQuery を使用する方法を理解しようとしています。このコードをオンラインで見つけましたが、うまくいきません。このコードは、ページをリダイレクトせずに JQuery を使用してユーザーにメッセージを出力する単純なログイン画面であると想定されています。すべて (データベース、ファイル、ファイル名など) を個別に確認しましたが、すべて正常に動作しています。私が削除した場合:
"$("#myForm").submit( function() {
return false;
});"
スクリプトから、ログインは機能しますが、実際の PHP ページにリダイレクトされますが、これは望ましくありません。PHP ファイルの出力ステートメントを、リダイレクトせずに html ページにポップアップ表示したい。コードのその部分をそのままにしておくと、送信ボタンをクリックしても何も起こりません (フィールドにデータが入力されているとき)。何も入力しないと、「ユーザー名とパスワードの両方を入力してください」というメッセージが表示されます。コードに示されているように、JQueryが機能していることがわかります。ただし、情報が入力されるたびに、送信時に何も起こりません。この問題は次のことと関係があると思います。
function(data) {
$("div#ack").html(data);
});
$.post 関数のパラメーター。スクリプト全体にアラートを配置しましたが、その関数に配置されたアラートは実行されませんでした。誰が何が起こっているのか教えてもらえますか?
HTML コード:
<html>
<head><title>Login Form: JQuery + PHP + AJAX</title></head>
<body>
<form id="myForm" action="http://localhost/login.php" method="POST">
username: <input type="text" name="username" id="username"/><br />
password: <input type="password" name="password" id="password"/><br />
<button id="submit">Login</button>
</form>
<div id="ack"></div>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script type="text/javascript" src=my_script.js"></script>
</body>
</html>
JQuery コード (my_script.js):
$("button#submit").click( function() {
if( $("#username").val() == "" || $("#password").val() == "" )
$("div#ack").html("Please enter both username and password.");
else
$.post( $("#myForm").attr("action"),
$("myForm :input").serializeArray(),
function(data) {
$("div#ack").html(data);
});
$("#myForm").submit( function() {
return false;
});
});
PHP コード (login.php):
<?php
mysql_connect('localhost','root','pass');
mysql_select_db('people');
$username = mysql_real_escape_string($_POST["username"] );
$password = mysql_real_escape_string($_POST["password"] );
if( empty($username) || empty($password) )
echo "Username and Password Mandatory - from PHP";
else {
$sql = "SELECT count(*) FROM users WHERE(username='$username' AND password='$password')";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
if($row[0] > 0)
echo "Login Successful";
else
echo "Login Failed";
}
?>