2016-11-04 4 views
0

"ログオン"機能を持つサーバーを作成しようとしています(ユーザー名とパスワードが一致する必要があります)。私はこれを「低レベル」で話すようにしています。拡張子はありません。ページがプルアップされるとすぐに、それらはすべてアクセス可能でフォームが表示されますが、ボタンがクリックされても何も起こりません。コンソールには何も書き込まれず、check()は呼び出されません。HTMLでログインしてJavascriptを使用しますか?

私は多くのことを試みました。機能、ボタンの種類、フォームからデータを取得する方法は変わっていませんし、動作していないようです。私は本当に正しい方向へのプッシュを感謝します(また、ユーザーがログオンしているときにクッキーを設定する方法についての瞬間も話すことができればそれもありがたいですが、これは手元の質問)。

var http = require("http"); 
var url = require("url"); 

var server = http.createServer(function (req, response){ 
    var page = url.parse(req.url).pathname; 

    response.writeHead(200, {'Content-Type':'text/html'}); 
    if (page == '/'){ 
     //home page 
    } 

    else if (page == '/page1'){ 
     //page one 
    } 

else if (page == '/auth'){ 
     response.write('<html>'+ 
     '<h1><center>Sign up for dumblr home of the dumblr</center></h1>'+ 
     '<form method="POST" name="auth" >'+ 
     'Username: <input type="text" name="user" required /> <br />'+ 
     'Password: <input type="password" name="pwd" required/> <br /> '+ 
     '<input type="button" value="Submit" onclick="check(this.form)"/> '+ 
     '</form>'); 

     function check(form){ 
      console.log("1"); 

      if(form.user.value == form.pwd.value){ 
       //response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']); 
       console.log("Cookie is set"); 
       return true; 
      } 
      else{ 
       response.write("<h1>Sorry, those are not correct. Try again.</h1>") 
       console.log("Didn't work") 
       return false; 
      } 
    } 


} 
    response.end(); 

}).listen(3000); 

console.log('Server running at http://127.0.0.1:3000'); 

答えて

1

サーバー側とクライアント側でJavaScript機能を混在させています。

あなたは

http://localhost:3000/auth

を開いたときに、非常に単純なページを作成しますが、ブラウザのこのページは機能チェック(フォーム)を持っていないサーバー側のコードがあります。この関数はページには存在せず、サーバー側にのみ存在します。だから、ボタンをクリックすると、ブラウザがコールチェックに失敗し、それがそれです。はるかに簡単なアプローチから始めるべきです。クライアント側でのみjavascriptを使用した単純なページをコーディングし、問題を解決しようとしてください。

関連する問題