2016-12-28 87 views
0

建立一個簡單的服務器,的NodeJS:發送JSON對象

var express = require('express'); 
var app = express(); 
var rooms = {}; 
.... 
app.listen(port, function(){console.log('Server Starts...\n');}); 

在通用處理器的代碼,我可以送一個JSON文件是這樣的:

app.post('/test',function(req,res){ 
    ..... 
    json = { 'status' = true, 'id' = new_id }; 
    res.end(JSON.stringify(json)); 
}); 

或者只是這樣的:

app.post('/test',function(req,res){ 
    ..... 
    json = { 'status' = true, 'id' = new_id }; 
    res.json(json); 
}); 

stringify正在將其轉換爲字符串(這很明顯),但是當它使用這個或那個時候更好? 有沒有更好的方法發送json對象與快遞?

在這兩種情況下,我該如何處理對象的接收?

我嘗試下面的代碼:

newid: function(){ 
     var new_id; 
     $.post('/test',new_id); 
     return new_id; 
    } 

但在我的HTML文件中的JavaScript是無法看到它(未定義):

<script>    
      var test = function() { 
       json = newid(); 
       alert(json); 
      } 
.... 
<button onclick="test()">NewId</button><br> 
.... 
+0

推薦閱讀:[沒有像「JSON對象」](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。 '{'status'= true,'id'= new_id}'也不是一個「JSON文件」,也不是一個文件,也不是JSON(它甚至不是JavaScript,這是一個語法錯誤)。你必須明確你的術語,因爲如果你把它混淆成一團糟,你很難推斷你的任務。 – Tomalak

+0

使用http://expressjs.com/en/api.html#res.json – str

回答

0

我找到了解決方案,使其與工作從服務器端描述的第二個選項:

... 
json = { 'status' = true, 'id' = new_id }; 
res.json(json); 

ofcourse,new_id是我的一個變量代碼。 在客戶端做的改變,我送返回值的函數instad:

newid: function(){ 
     $.post('/test', function(data){ 
      if(data.status) console.log(data.new_id) 
     }) 
    }, 
0

與要傳遞到快遞以.json功能什麼留在你原來的問題的意見是一個對象,所以你的代碼應該更像:

app.post('/test',function(req,res){ 
    ..... 
    let responseObject = { 'status' = true, 'id' = new_id }; 
    res.json(responseObject); 
}); 

這將返回JSON一樣的,如果你字符串化它,但使用以.json也將所有正確的標題。

您無法從服務器端代碼中看到任何迴應的原因是客戶端您正試圖同時使用$ .post應該發送回調的位置。您還需要更改代碼,因爲$ .post函數期望您發送回調作爲第二個參數。

來源:https://api.jquery.com/jquery.post/

newid: function(callback){ 
     $.post('/test', callback, 'json'); 
    } 

然後,你需要通過

<script>    
      var test = function() { 
       json = newid(function(object) { 
        alert(object); 
       } 
      } 
.... 
<button onclick="test()">NewId</button><br> 
.... 

希望這有助於通過回調函數。