2016-10-22 44 views
0

我想使用AJAX發送簡單的表單數據到節點/快遞服務器。提交時,我被帶到一個無法POST /頁面,而我能夠console.log一個請求,它不包括表單中的數據。我錯過了什麼?訪問節點服務器上的發佈數據?

形式

<form method="POST" class="form-group"> 
    <label for="sentenceCount">Sentences</label> 
    <input type="number" placeholder="10" name="sentence count" id="sentenceCount" class="form-control parameters"> 
    <button type="submit" id="submit" class="btn btn-primary mt-1">Submit</button> 

</form> 

AJAX請求 $( '按鈕')。在( '點擊',功能(數據){

  $.ajax({ 
       data: data, 
       url: '/data', 
       type: "POST" 

      }) 
     } 

    ) 

Server.js

var express = require('express'); 
var app = express(); 
app.listen(8000) 

app.get('/', function (req, res) { 
    res.sendFile('/Index.html', { 
     root: __dirname 
    }) 
}); 

app.post('/data', function (req, res) { 
    console.log(req) 
}) 

更新:

我已經弄清楚了,並且能夠訪問一個body屬性,但是body是空的,並且無法獲得我需要的輸入值。

AJAX:

$('button').on('click', function(data) { 
     var formData = $('input').val(); 
     console.log(formData) 

      $.ajax({ 
       data: formData, 
       url: '/data', 
       type: "post" 

      }) 
     } 

    ) 

服務器:

app.get('/', function (req, res) { 
res.sendFile('/Index.html', { 
    root: __dirname 
}) 
}); 

    app.use(bodyParser.json()) 

    app.post('/data', function(req, res) { 
     console.log(req.body) 
     }); 

回答

1

你忘了身體的解析器。

  1. 安裝body-parsernpm i body-parser
  2. 表達路線前體添加JSON解析器的中間件。

實施例:

const bodyParser = require('body-parser'); 
const express = require('express'); 

const app = express(); 

app.use(bodyParser.json()) 

app.post('/data', (req, res) => { 
    console.log(req.body); 
    res.end(); 
}); 

,並形成數據應與JSON編碼的對象:

$('button').on('click', function(data) { 
    var formData = $('input').val(); 
     $.ajax({ 
      data: {value: formData}, 
      url: '/data', 
      type: "post" 

     }) 
    } 

) 
+0

感謝。 幾個問題: 爲什麼你使用app.get()表單是一個post請求?當我使用.get時,不會記錄任何內容,但會發布它。 但是,帖子上的內容是空的。任何想法爲什麼數據沒有通過? –

+0

1.修復get/post問題。 2.表單數據不是有效的JSON。 –