2016-08-12 50 views
1

我創建了一個NodeJS服務器,它使用EJS文件將JSON數據發送到前端。我所需要的是從三個API中取得的JSON代碼顯示在前端(本地主機)上。 它可以在我做類似<h1><%= data2[0]['id'] %></h1>的工作時使用,但是這隻會給我一小部分我需要的JSON。如何使用EJS文件從NodeJS服務器檢索完整的JSON

服務器代碼:

var express = require('express'); 
var router = express.Router(); 
var request = require('request'); 
var app = express(); 

router.get("/", function(req, res){ 
var request = require('request-promise'); 
var data1; 
var data2; 
var data3; 


request("http://api1.com").then(function(body){ 
    data1 = JSON.parse(body); 

    return request("http://api2.com"); 
}) 
    .then(function(body) { 
     data2 = JSON.parse(body); 


     return request("http://api3.com"); 
    }) 
    .then(function(body){ 
     data3 = JSON.parse(body); 

     res.render("services.ejs", {data1: data1, data2: data2, data3: data3}); 
    }) 
}); 

module.exports = router; 

前端例子:

<!DOCTYPE html> 
<html> 
<body> 

    <p><%= data1 %></p> 
    <p><%= data2 %></p> 
    <p><%= data3 %></p> 

</body> 
</html> 

這是我希望它看起來像,但它也可能是在一個段落或另一種無組織的方式,只要它具有從API完整JSON:

enter image description here

回答

0
res.json({ data1: data1, data2: data2, data3: data3 }); 

是向客戶端發送基於JSON響應的推薦方式。

+0

這確實有效並且不導致[對象對象]頁面。它給了我完整的JSON。謝謝 – CtrlAltDelete

0

如果你只關心沒有任何格式的顯示數據,並強調,你可以簡單地做

res.send({data1: data1, data2: data2, data3: data3})

我假設你看到[object Object]或與您的代碼和類似的,即使我不是對ejs非常瞭解,我會猜測你必須自己遍歷對象並在遍歷期間生成相關的HTML代碼。這樣你就可以很好地打印和突出你心中的內容。

+0

這確實奏效了,並導致了[object object],我將能夠遍歷它。 – CtrlAltDelete

相關問題