2012-02-13 40 views
13

Tôi hoàn toàn bị mất về điều này; Tôi đang sử dụng NodeJS để lấy một JSON và tôi cần phải chuyển biến cho trang của tôi và có JavaScript sử dụng dữ liệu.ExpressJS Chuyển biến sang JavaScript

app.get('/test', function(req, res) { 
    res.render('testPage', { 
     myVar: 'My Data' 
    }); 

Đó là mã Express của tôi (rất đơn giản cho mục đích thử nghiệm); hiện nay sử dụng JADE Tôi muốn thu thập dữ liệu này mà tôi biết để hiển thị trên trang chỉ đơn giản là

p= myVar 

Nhưng tôi cần để có thể thu thập dữ liệu này trong JavaScript (nếu có thể bên trong một file .js) nhưng bây giờ chỉ để hiển thị các biến trong một hộp Alert tôi đã thử

alert(#{myVar}) 

và nhiều người khác nếu có ai có thể giúp đỡ được nhiều đánh giá cao

+0

Tôi không biết nhiều về Node.JS hoặc thể hiện, nhưng tôi nghĩ bạn nên thay đổi mẫu testPage của bạn để bao gồm với giá trị myVar –

+0

nhưng có thể Express có nghĩa là để tóm tắt chúng tôi từ đó –

+0

Nếu bạn đang sử dụng HTML, hãy sử dụng Jade, Mustache hoặc một số mẫu khác. Nếu bạn truyền dữ liệu, hãy sử dụng JSON và phân tích cú pháp của bạn trong một đối tượng nếu đáp ứng là Content-Type: application/json. –

Trả lời

10

Hãy thử như sau:

alert('!{myVar}') 

Đó là một ý tưởng tốt để JSON mã hóa dữ liệu nếu là nhiều hơn chỉ là một chuỗi.

alert('!{JSON.stringify(myVar)}') 
+0

Điều này đã khắc phục được sự cố của tôi cảm ơn sự giúp đỡ của bạn; để đi vào a.Tuy nhiên, tệp js chỉ đơn giản là cần thiết để tạo biến trong tệp .jade và sau đó tệp .js sẽ nhận lại nó nhờ –

3

Vâng, Javascript (và V8) đã tích hợp sẵn chức năng để render JSON từ một đối tượng và JSON xảy ra tương thích cú pháp với Javascript.

Vì vậy, cách dễ nhất để làm những gì bạn đang cố gắng làm sẽ là:

<script type="text/javascript>var myVar = #{JSON.stringify(myVar)};</script> 

Và, vâng, bạn có thể sử dụng HTML trong một mẫu Jade.

-1

Bạn có thể tận dụng Now.js cho việc này. Nó dễ dàng cho phép bạn chia sẻ các biến client/server side thời gian thực.

Check it out: http://www.nowjs.com/

11

Như Timothy nói:

<script type="text/javascript>var myVar = #{JSON.stringify(myVar)};</script> 

này cũng có thể được thực hiện như sau nếu bạn không thích để viết HTML trong ngọc mẫu:

script 
    var myVar = !{JSON.stringify(myVar)}; 
    var myVar2 = !{JSON.stringify(myVar2)}; 

Cập nhật: Đối với tốc 4 sử dụng script. thay vì script để nó sẽ được hiển thị dưới dạng javascript thay vì html.

0

Tôi biết tôi hơi muộn với bữa tiệc, nhưng tôi đã viết một mô-đun (JShare) vài tháng trước để giải quyết vấn đề chính xác này. Kiểm tra xem nó ra: https://npmjs.org/package/jshare

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