2013-05-12 4 views
8

मैं हालांकि जब मैं का उपयोगNodeJS और पेज

var test ="<%= data %>"; 
console.log(test); 

मैं उत्पादन

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object 

console.log पर प्राप्त की कोशिश, एक .ejs पृष्ठ पर एक सरणी पारित करने के लिए कोशिश कर रहा हूँ करने के लिए Ejs पास सरणी nodejs फ़ाइल ठीक काम करता है, लेकिन जब मैं console.log क्लाइंट की कोशिश करता हूं तो यह गड़बड़ हो जाता है।

उत्तर

30

यह समस्या के बजाय <%= data %> के साथ होने की संभावना है। आप परिणाम क्लाइंट साइड जाँच, तो आप शायद यह दिखाई देगा:

var test ="[object Object],[object Object],[object Object],..."; 

आप बस प्रिंट एक Array, यह सिर्फ .join() the elements, बुला होगा जब प्रत्येक पर .toString()And:

new Object().toString() === "[object Object]" 

उत्पादन करने के लिए डेटा तो यह सेवन किया जा सकता है, तो आप JSON.stringify() उपयोग कर सकते हैं:

:

var test = <%- JSON.stringify(data) %>; 

यह आउटपुट JavaScript की synax एक Array literal of Object literals के आधार पर किया जा रहा JSON के वाक्य रचना का लाभ लेता है

var test = [{"prop":"value"},...]; 
+8

यदि मैं '<% = JSON.stringify()%>' '% = JSON.stringify()%>' के बजाय '<% - JSON.stringify()%>' का उपयोग नहीं करता हूं तो मैं इसे ठीक से काम नहीं कर सकता। – robertklep

+0

@robertklep धन्यवाद। इसके बारे में भूल गए। –