2015-03-29 8 views
8

Używam Node.js i mam problemy z komunikacją z klientem.Node.js przekazuje parametry do klienta za pomocą ekspresowego renderowania

zdefiniować ekspresowe:

var express    = require("express"); 
var app     = express();` 

Gdy próbuję i przekazać parametr do klienta na żądania strony zmienna przechowuje żadnych danych, na przykład:

app.get("/", function(req, res){ 
    res.render("index", { name: "example" }); 
}); 

Na stronie indeksu, kiedy używam konsoli do drukowania zmiennej (name), zwraca ona "".

Więcej informacji: http://expressjs.com/api.html#app.render

Am I brakuje czegoś lub robi coś złego?

+0

to tylko przekazywanie parametrów w szablonie – marsh

+0

Używam kierownic jako mojego silnika, w jaki sposób mam wtedy uzyskać dostęp do parametrów? Czy w ogóle można po prostu przekazać parametry, które stają się dostępne lokalnie na stronie klienta? – g571792

Odpowiedz

9

Zmienna name wysłane do funkcji renderowania jest dostępna tylko podczas renderowania strony, po to wysłane do klienta, nie jest dostępne. Musisz go użyć w swoim widoku na etapie renderowania.

Ponieważ używasz kierownicę, można wyświetlić je na swojej stronie jak ta, na przykład:

<h1>{{ name }}</h1> 

Jeśli chcesz korzystać z tych danych w javascript, użyj go wewnątrz script tagu:

<script> 
    var name = "{{ name }}"; 
    console.log(name); 
</script> 
+0

praca dla mnie - thxs – Guihgo

+0

Kiedy mam console.log (name) dostałem {{name}} – PhoenixB

1

Jeśli chcesz uzyskać parametry na stronie klienta poprzez javascript, należy zrobić szablon jak to <script>var data = data</script>, inaczej zmienne nie są dostępne

Jeśli używasz Jade, to będzie coś takiego:

script(type='text/javascript'). 
    var name = !{name} 
7

Zasadniczo mówisz express, aby renderować swoją stronę indeksu i podając wartość dla zmiennej name, ale to niekoniecznie powoduje, że zmienna name jest dostępna w javascript po stronie klienta. Musisz edytować swój szablon indeksu, aby wyświetlić zmienną name na stronie. Składnia różni się w zależności od używanego mechanizmu szablonowania (jade, ejs, dustjs).

Innym rozwiązaniem jest użycie wywołania ajaxowego w javascriptie strony klienta i użycie na serwerze adresu res.json w celu wysłania danych. Następnie możesz ocenić name w konsoli. Ex jQuery:

index.html:

$.get("/getvar", function(data) { 
    name = data.name; 
}); 

server.js:

app.get("/getvar", function(req, res){ 
    res.json({ name: "example" }); 
}); 
Powiązane problemy