2014-08-28 5 views
0

Я пытаюсь отобразить массив объектов (точки высоких карт). Данные должны быть точными, но когда я пытаюсь сделать, я получаю [object Object] вместо самих данных.express.js - показать все данные

JSON.stringify() Нехорошо с HTML.

util.inspect, также нет, и добавить данные.

toString() дайте мне то же самое, что и рендеринг.

Я не знаю, что еще попробовать, что я пытаюсь отправить, это данные для графического изображения высокой четкости.

Минимальный пример:

app.js:

var express = require('express'), 
    app = express(); 

app.listen(8080); 

app.get('/', function (req, res) { 
    var view = 'test.ejs', 
     theme = [{name: '1', y: 5}, {name: '2', y: 2}]; 

    res.render(view, {theme: theme}); 
    console.log('ok'); 
}); 

theme_days.ejs:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      <%= theme %> 
     </script> 
    </body> 
</html> 

результат (как если бы, toString()):

[object Object],[object Object] 

Результат с JSON.stringify():

[{&quot;name&quot;:&quot;1&quot;,&quot;y&quot;:5},{&quot;name&quot;:&quot;2&quot;,&quot;y&quot;:2}] 

Результат с util.inspect:

[ { name: &#39;1&#39;, y: 5 }, { name: &#39;2&#39;, y: 2 } ] 

EDIT: теперь я понимаю, что S Происходило что ' спасшийся в HTML, есть способ, чтобы предотвратить это?

+1

eacaping happends в уровне шаблона увидеть это для решения http://stackoverflow.com/questions/ 8547131/how-to-include-html-code-in-a-view – Max

+1

@Max: Urg, that и JSON.stringify постоянно устраняют проблему ... – DrakaSAN

ответ

1

Почему не вы используете <%- вместо <%= и передаете объект JSON.stringify().

Первый будет оказывать объект в HTML, второй будет оказывать переменные (как они есть, Eval)

0

Я закончил с этим:

осторожны, это субоптимальным:

app.js

var express = require('express'), 
    app = express(), 
    util = require('util'); 

app.listen(8080); 

app.get('/', function (req, res) { 
    var view = 'test.ejs', 
     theme = [{"name": "1", "y": 5}, {"name": "2", "y": 2}];//Added " 
    console.log(JSON.stringify(theme)); 
    res.render(view, {theme: JSON.stringify(theme)}); 
    console.log('ok'); 
}); 

test.ejs:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      var json = '<%= theme %>'.replace(/&quot;/g, '"'), 
       theme = JSON.parse(json); 
      console.log(theme); 
     </script> 
    </body> 
</html> 
Смежные вопросы