2016-12-27 53 views
1

我的目的是將JSON對象從客戶端發送到服務器。因此,考慮到客戶的以下細節:Node.js:如何交換JSON對象

<script> 
     var onClickFunct = function() { 
      trial1.send({ 
       "test": $("#input_test").val(), 
      }); 
     } 
    </script> 

哪裏input_test是我在html頁面標記的名稱。 哪裏trial1與下面的代碼來實現:

var trial1 = { 
    //notifica al server una nuova registrazione 
    send: function(data){ 
     $.getJSON('/tst',data); 
    } 
} 

我的服務器無法看清物體;事實上,如果我打印req.params它顯示我「未定義」。

app.get('/tst',function(req){ 
    console.log(req.params); 
}); 

我的index.html reuire以下腳本<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

當服務器只需要express

+0

你可以上傳完整的服務器代碼,它具有常量bodyParser =需要( '身體解析器'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:true})); – Sumeet

回答

1

嘗試改變:

app.get('/tst',function(req){ 
    console.log(req.params); 
}); 

到:

app.get('/tst',function(req){ 
    console.log(req.query); 
}); 

req.params是參數的途徑,如:

app.get('/test/:name', function (req, res) { 
    console.log(req.params); 
}); 

當您訪問/test/abc那麼req.params.name會​​。

$.getJSON()發送數據的查詢參數,請參閱:

,以及所使用res.query查詢參數。

如果這是一個POST請求,並且您想要訪問在請求正文中傳遞的參數,那麼您將使用req.body(但您需要使用bodyParser中間件)。

記住只使用GET用於讀取操作,其中查詢參數指定你想獲得或以何種形式是什麼,什麼樣的順序等

如果您通過數據庫中的數據或類似的東西來存儲然後使用POST或PUT來傳遞請求主體中的數據(可以是JSON)。

1
$ npm install --save body-parser 

然後:

var bodyParser = require('body-parser') 
app.use(bodyParser.json());  // to support JSON-encoded bodies 
app.use(bodyParser.urlencoded({  // to support URL-encoded bodies 
    extended: true 
})); 

你的終點應該是這樣的:

app.post('/tst',function(req){ 

    console.log(req.body); 
}); 

然後使用jQuery帖子:

$.post('/tst',data); 

體分析器安裝例如從這裏取:

How to retrieve POST query parameters?

希望它能幫助:)

+0

我發現它非常有用;我試過了,它也在工作。只是不同之處在於,現在溝通被加密了,對嗎? – pittuzzo

+0

不完全加密,唯一真正的技術差異(如果我錯了,請更正此帖)是GET對查詢字符串的限制要短得多。在實踐中,GET是從服務器獲取某些東西時的。 GET調用不應對服務器造成副作用。 POST是當你打算在服務器上發送一些東西,並讓它做一些事情。 –