2012-12-09 13 views
48

मेरी index.ejs में प्रस्तुत करने के लिए मैं इस कोड है =:एक्सप्रेस और EJS <% एक JSON

var current_user = <%= user %> 

मेरी नोड में मैं

app.get("/", function(req, res){ 
    res.locals.user = req.user 
    res.render("index") 
}) 

है हालांकि, पेज मैं

प्राप्त पर
var current_user = [object Object] 

और अगर मैं लिखना

var current_user = <%= JSON.stringify(user) %> 

मैं प्राप्त:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:... 

वहाँ एक JSON कि जे एस पठनीय हो जाएगा पारित करने के लिए कोई तरीका है?

उत्तर

140

ओह यह आसान था, <%= का उपयोग न करें, इसके बजाय <%- का उपयोग करें। उदाहरण के लिए:

<%- JSON.stringify(user) %> 

पहले एक HTML में प्रस्तुत करना होगा, दूसरा एक चर प्रस्तुत करना होगा (वे कर रहे हैं के रूप में, eval)

+2

धन्यवाद !!! मैं इस लॉल पर अटक गया था –

+22

सही उत्तर लेकिन सटीक के लिए, यह <% - JSON.stringify (उपयोगकर्ता)%> है जो जादू प्रस्तुत करता है। –

+0

क्या वास्तव में eval फ़ंक्शन का उपयोग किया जाता है, या आप यह कह रहे हैं कि अगर परिणाम को eval कहा जाता है तो इसी तरह के परिणाम समान होते हैं। मैं उत्सुक हूं, क्योंकि हम सभी जानते हैं, eval है ... – NicholasFolk

2

सावधान!

यदि उपयोगकर्ता एपीआई कॉल, <% के माध्यम से बनाया जा सकता है - तो आपको गंभीर एक्सएसएस भेद्यता के साथ छोड़ देगा। संभावित समाधान यहां पाए जा सकते हैं:

Pass variables to JavaScript in ExpressJS

संबंधित मुद्दे