Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
cara menangbil data dari Form dengan Node.JS
Gan bagaimana ya mengambil data dari form dengan methode post dari file html dengan node.js? saya sudah menggunakan code yang tertera dibawah tapi ketika hasil value dari form ingin saya tampilkan ke jendela browser kok tidak bisa ya? tetapi ketika ditampilkan diconsole value dari form tersebut bisa ditampilan. kira kira bagaimana solusinya?
//ini route JS
var fs = require('fs');
var url = require('url');
var query = require('querystring');
var link;
var nama = satus = "";
function fileRoute(namaFile, res){
res.writeHead(200, {'Content-Type' : 'text/html'});
fs.readFile(namaFile, function(no, yes){
if(no){
res.writeHead(404);
res.write('File not found');
res.write('')
}
else{
res.write(yes);
}
res.end();
});
}
function handleRequest(req, res){
res.writeHead(200, {'Content-Type':'text/html'});
link = url.parse(req.url);
if(link.pathname == '/')[
fileRoute('./index.html', res)
]
else if(link.pathname == '/about'){
fileRoute('./about.html', res)
}
else if(link.pathname == '/form'){
fs.readFile('./form.html', function(no, yes){
if(no){
res.writeHead(404);
res.write('File Not Found');
data = query.parse(link.query);
}
else{
var dataPost = "";
if(req.method.toUpperCase() == 'POST'){
req.on('data', function(chunck){
dataPost += chunck;
});
req.on('end', function(){
res.write(JSON.stringify(dataPost)); //bagian errornya kayaknya sekitar sini,
//ketika saya disini menambahkan console.log maka data akan tampil, tapi ketika ingin
//ditampilkan di browser datanya tidak tampil
});
res.write('<br><a href="/">Back to index</a>')
}
else{
res.write(yes);
}
}
res.end();
})
}
else{
fileRoute('null', res)
}
}
module.exports.handle = handleRequest;
// ini servernya
var http = require('http');
var router = require('./ruter.js');
var server = http.createServer(router.handle);
server.listen(3000, function(){
console.log('Server is running');
});
//ini file form pada htmlnya
<!DOCTYPE html>
<html lang="en">
<head>
<title>Pendaftaran</title>
<meta charset="UTF-8">
</head>
<body>
<form method="POST">
<label>Nama</label><input type="text" name="nama">
<label>Status</label><input type="text" name="status" value="">
<input type="submit" value="Submit">
</form>
</body>
</html>
3 Jawaban:
Jawaban Terpilih
fs.readFile('./form.html', function(no, yes){
if(no){
res.writeHead(404);
res.write('File Not Found');
data = query.parse(link.query);
}
else{
var dataPost = "";
if(req.method.toUpperCase() == 'POST'){
req.on('data', function(chunck){
dataPost += chunck;
});
req.on('end', function(){
res.write(JSON.stringify(dataPost));
});
res.write('<br><a href="/">Back to index</a>')
}
else{
res.write(yes);
}
}
res.end();// <==== sebelum res.write() dan semua yang didalam if/else diatas dieksekusi, res.end() sudah lebih dahulu dieksekusi, jadi res.write() tidak bisa lagi
benerin deh posisi res.end, NodeJS kan sifatnya non-blocking, semoga membantu :D
tambahan aja, selain karena posisi res.end yang salah, res.write pada 'dataPost' juga sebenernya tidak akan terkirim. lebih baik fungsi req.on('end') dihapus dan res.write ditaruh di fungsi req.on('data') dan langsung ditambahkan res.end disitu juga
req.on('data', function(chunck)
{
dataPost += chunck;
res.write(JSON.stringify(dataPost));
res.write('<br><a href="/">Back to index</a>');
res.end();
});
Terimakasih sudah mau membantu, ternyata betul terdapat kesalahan pada penaruhan res.end() sudah saya edit dan ternyata sudah jalan :D