2016-08-08 5 views
-1

ノードを学習して問題があります。なぜ私のPOSTリクエストでデータを読み込まないのですか? req.methodを使ってPOSTを動作させると、htmlでPOSTを送信すると、 'data'が出されません。 これは私のhtmlの一部です:POSTでデータを読み取れない理由

<form method="post" action='./script.js'> 
<label for="my-form">Enter phraze</label><input type="text" id='my-form'><br> 
<input type="submit"> 
</form> 

let fs = require('fs'); 
let http = require('http'); 

let server = http.createServer((req, res) => { 

    res.setEncoding = 'utf8'; 
    res.writeHead(200, {'Content-type': 'text/html'}); 

    if(req.url == '/'){ 
    reply('./index.html', res) 
    } 
    if(req.method == 'POST'){ 
    let body; 
    req.on('data', 
    (chunk) => { if(chunk != null) {body += chunk.toString(); res.write(chunk.toString())} }) 
    req.on('end', 
    () => res.end(body)) 
} 

}).listen(5858); 

server.on('error', (err) => { throw err.message }); 

function reply(path, res){ 
    let streamPage = fs.createReadStream(path, {encoding: 'utf8'}); 

    streamPage.on('readable', 
    (chunk) => { chunk = streamPage.read(); if(chunk != null) res.write(chunk) }); 
    streamPage.on('end', 
    (out) => res.end()); 
    streamPage.on('error', (err) => err.message) 
} 

答えて

0

あなたはそれが正しいではありません、スクリプトファイルへのPOSTリクエストを送信します。サーバーのアクションフィールドにあなたのルートを設定する必要があります。

<form method="post" action='/'> 
<label for="my-form">Enter phraze</label><input type="text" id='my-form'><br> 
<input type="submit"> 
</form> 

このようなものです。

+0

あなたと同じです。それは動作しません。私のスクリプトファイルで私は 'データ'の私のコールバックに忠実ではありません –

+0

@КостяМатюшонокそれは私の間違いです、申し訳ありません。あなたのHTMLはあなたのノードサーバーのルーティングについて何も知らない。 CURLまたはフィドラーを介してポストリクエストを送信する場合は、コールバックに入力します。 HTMLページからリクエストを送信する場合は、action = '/'をaction = 'http:// localhost:5858 /'に置き換えるか、または有用なルーティングとテンプレートにexpress.jsを使用してください。 –

+0

方法を確認しますが、それも機能しません(( –

関連する問題