2016-05-28 12 views
1

私はウェブ開発では新しいですが、伝統的な開発で何年もの経験があります。 Java、C、ABAPを使用しています。

私は非常に単純なログイン機能を作成しようとしていますが、jQueryの$.post()機能には苦労しています。

以下のコードでは、form_loginのフォームを送信した後、$.post()のデータ処理部分のalert("test")関数が実行されていないようです。私は問題は、JavaScript関数login_attempt()とフォームform_loginの提出をどのように関連づけているかであると思います。

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title>Login</title> 
 

 
\t <script src="jquery-2.2.4.min.js"></script> 
 

 
\t <script> 
 
\t function login_attempt(){ 
 
\t \t $.post("login.php", $("#form_login").serialize(), function(data){alert("test");},html); 
 
\t } 
 
\t </script> 
 

 
</head> 
 
<body> 
 
\t <h1>Login-Form</h1> \t 
 
\t <form id="form_login" method="post" onsubmit="return login_attempt()"> 
 
\t \t <p><label for="id_username">Username: </label><input id="id_username" name="username" type="text" width="20"></label></p> 
 
\t \t <p><label for="id_password">Password: </label><input id="id_password" name="password" type="password" width="10"></label></p> 
 
\t \t <p><input type="submit" name="submit_login"></p> 
 
\t </form> 
 

 
\t \t 
 
</body> 
 
</html>

答えて

1

機能login_attemptは今login_attempt機能は、通常の方法で提出を停止するフォームを教えてくれないので、フォームも同様に提出されていることをした後、フォームを送信したときにトリガされています。したがって、postメソッドの実際のコールバックが何かを行う前にページがリロードされます。

return false;をlogin_attempt関数の最後の行に追加すると、通常の方法で送信しないでください。

+0

ありがとうございます、これは動作しています。 Btw、これはJavaScriptでフォーム・ポストを処理する一般的な方法ですか?以前は –

+0

でしたが、ほとんどの開発者は1つの属性の使用を避けました。 –

+1

はい、それは珍しいことではありませんが、それは$( '#formid')を使用してJavaScriptでonsubmitを追加する方がよりエレガントですon( 'submit'、function()) –

関連する問題