2016-05-19 6 views
0

Onclick Submit-Button, ich bin die Umleitung der Daten "Name" auf diese URL http://localhost:3000/getfileNames.But, jetzt versuche ich, die Daten zu bekommen " Name“zu gleichen hTML-Seite (http://localhost:3000/login).Can jemand bitte helfen Sie mir in Bezug auf diese aus ...So senden Sie die Antwort auf die gleiche HTML-Seite nach dem Klicken auf Senden Schaltfläche mit node.js

Mein sample.html:

<html> 
<head> 
</head> 
<h1> 
Login 
</h1> 

</head> 
<body> 
    <div id="formContainer"> 
     <form method="post" action="/getfileNames"> 
      Name: <input type="text" name="name" id="name" placeholder="name"> <br><br> 
      Password: <input type="text" name="pwd" id="pwd" placeholder="password"> <br><br> 
      <input type="submit" name="submit" value="submit" /> 
     </form> 
    </div> 
</body> 
</html> 

Mein index.js:

var express = require('express'); 
var router = express.Router(); 


router.get("/login", function(req, res) 
{ 

    res.sendFile("login.html", {"root": __dirname}); 

}); 


router.post('/getfileNames', function(req, res) { 
    console.log(req.body.name); 
    res.send('Name: ' + req.body.name); 
}); 




module.exports = router; 
+0

Sie mehr klar sein könnte? Was meinst du mit "Redirect Daten"? Und was meinst du "Daten auf Login-Seite bekommen"? –

+0

Eigentlich sende ich den Namen von der Login-Seite und nach dem Klicken auf Senden Schaltfläche, ich möchte den Namen in der separaten div in der gleichen login.html selbst – dev777

Antwort

1

Wenn Sie möchten, baue s ome Art von Auth, schlage ich vor, Server-Side-Template-System zu verwenden, z. Jade. So würde der Code wie:

var express = require('express'); 
var router = express.Router(); 


router.get("/", function(req, res) 
{ 
    if(req.user) 
     res.render('index', {user: req.user.name}) 
    else res.redirect('/login'); 
}); 
router.get('/login', function(req, res) { 
    res.render('login'); 
}); 

router.post('/login', function(req, res) { 
    /* Log user in, set cookies, whatever */ 
    res.redirect('/'); 
}); 

In oben in der App einige einige Auth-Middleware verwenden (z passport.js oder es selbst schreiben). Natürlich können Sie einfach AJAX machen, um Benutzernamen zu erhalten, aber ich denke nicht, dass es in diesem Fall eine gute Lösung ist.

UPDATE

Wenn Sie nur einen Text Sie auf dem Server gespeichert zeigen wollen.

index.js

<html> 
<head> 
</head> 
<h1> 
Login 
</h1> 

</head> 
<body> 
    <p id="savedName"></p> 
    <div id="formContainer"> 
     <form> 
      Name: <input type="text" name="name" id="name" placeholder="name"> <br><br> 
      Password: <input type="text" name="pwd" id="pwd" placeholder="password"> <br><br> 
      <button name="submit" value="submit" id="btn"/> 
     </form> 
    </div> 
</body> 
</html> 

Client.js

$(function(){ 
    $.get('/name').done(fucntion(name){ $('#savedName').text(name) }).fail(alert); 


    $('#btn').click(function(){ 
    var name = $('#name').val(); 
    var pwd = $('#pwd').val(); 
    $.post('/name', {name: name, pwd: pwd}).done(fucntion(){ $('#savedName').text(name) }).fail(alert); 
    }) 

}) 

server.js

var express = require('express'); 
var router = express.Router(); 

var name = ""; 
router.get("/", function(req, res) 
{ 
    res.sendFile("login.html", {"root": __dirname}); 

}); 

router.get('/name', function(req, res) { 
    res.send(name); 
}); 

router.post('/name', function(req, res) { 
    name = req.body.name; 
    res.senStatus(200); 
}); 
+0

Ich benutze nicht für die Authentifizierung Zweck.Nur wenn ich einige senden Daten in das Textfeld, nach dem Klicken auf "Senden" muss ich den gleichen Namen in der gleichen HTML-Seite anzeigen – dev777

+0

@ dev777 Nun, dann denke ich, dass Sie kein Formular einreichen müssen. Verwenden Sie einfach AJAX, um mit dem Server zu kommunizieren und Änderungen mit JS anzuzeigen. –

+0

@ dev777 siehe Update –

Verwandte Themen