2013-05-12 25 views
8

Tôi cố gắng để vượt qua một mảng đến một trang .ejs, tuy nhiên khi tôi cố gắng sử dụngNodeJs và Mảng Ejs đèo trang

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

tôi nhận được đầu ra

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

console.log trên các tập tin nodejs hoạt động tốt, nhưng khi tôi thử console.log phía khách hàng nó messes lên.

Trả lời

30

Sự cố có thể xảy ra với <%= data %>, thay vì console.log(). Nếu bạn kiểm tra kết quả client-side, có lẽ bạn sẽ thấy:

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

Khi bạn chỉ in một Array, điều này sẽ chỉ .join() the elements, gọi .toString() trên mỗi. And:

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

Để xuất dữ liệu để nó có thể được tiêu thụ, bạn có thể sử dụng JSON.stringify():

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

này có lợi thế của cú pháp JSON của được dựa trên synax Javascript để ra một Array literal of Object literals:

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

Tôi không thể làm việc này đúng nếu tôi không sử dụng '<% - JSON.stringify()%>' thay vì '<% = JSON.stringify()%>'. – robertklep

+0

@robertklep Cảm ơn. Quên chuyện đó đi. –

Các vấn đề liên quan