2016-09-23 2 views
0

Я искал вокруг, но не мог найти ответ на этот вопрос ...Перенаправление на URL в запросе POST

Я действительно новым для NodeJS. Я пытаюсь написать сервер, который будет принимать запрос POST, когда пользователь попытается войти в систему, а затем перенаправить на домашнюю страницу с помощью GET, и теперь на домашней странице будет отображаться имя пользователя.

так, если URL-адрес является home.html, на странице он говорит guest, если URL является home.html?username=adam то на странице он говорит adam

На моем login.html, есть форма, аналогичная этой

<FORM ACTION="login.html" METHOD="POST"> 
    <CENTER> 
    Username: <INPUT TYPE="text" ID="username" required=true><BR> 
    Password: <INPUT TYPE="password" ID="password" required=true><BR> 
    <INPUT TYPE="SUBMIT"> 
    </CENTER> 
</FORM> 

на моем server.js, у меня есть блок пытается получить имя пользователя и перенаправлять

http.createServer(function (req, res) { 
    if(req.url == "login.html" && req.method == "POST") 
    { 
    req.on('data', function(chunk) { 
     var someData += chunk; 
     var username = //get from POST data 

     //attempt to redirect 
     res.writeHead(200, {"Location":"home,html?username=adam"}); 
     res.end(); 
    }); 
    } 
} 

Я смог получить имя пользователя и зарегистрировать его, но когда я попытался перенаправить, страница вернулась в исходное состояние, и url все еще говорит login.html ...

Я даже не уверен, m делать это правильно, пожалуйста, помогите.

ответ

0

Поскольку вы новичок в nodejs, попробуйте использовать REST API для связи, а не напрямую перенаправлять на другие страницы.

Чтобы получить данные формы в сервере JS вам необходимо установить тела анализатор, который подробно здесь:

[https://github.com/expressjs/body-parser][1]

Затем обновите JS сервера, как показано ниже:

var app = require('express')(); 
var http = require('http').Server(app); 
var bodyParser = require('body-parser') 

app.use(bodyParser()); 

app.get('/login', function (req, res) { 
    res.sendfile('login.html'); 
}); 
app.get('/home', function (req, res) { 
    res.sendfile('home.html'); 
}); 
app.post('/login', function (req, res) { 

    console.log("Username:",req.body.username); 
    console.log("password:",req.body.password);//just for reference do not show anywhere 
    res.redirect('/home?username='+req.body.username); 
}); 



http.listen(3000, function() { 
    console.log('listening on *:3000'); 
}); 

и ваш login login.html будет выглядеть так:

<FORM ACTION="/login" METHOD="POST"> 
    <CENTER> 
    Username: <INPUT TYPE="text" name="username" ID="username" required=true><BR> 
    Password: <INPUT TYPE="password" name="password" ID="password" required=true><BR> 
    <INPUT TYPE="SUBMIT"> 
    </CENTER> 
</FORM> 

Сделайте необходимое действие на домашней странице, так как теперь вы пользуетесь с именем пользователя на url..hope this help .. дайте мне знать, если есть какие-либо сомнения. Счастливое кодирование :)

Смежные вопросы