2015-12-05 2 views
0

je peux imprimer mes res.locals.myData comme celui-ci sur le côté client: <%= myData%>Comment accéder res.locals de script au lieu de html

Comment puis-je l'utiliser dans le script? Cela ne fonctionne pas:

<script type="text/javascript"> 
var receivedData = myData 
</script> 

EDIT sortie Server à l'aide res.locals.myData:

[ '83', 
    { v: 294, 
    f: '29 <img src="img/Gold.png"> <img src="img/Silver.png"> 94 <img src="img/Copper.png">' }, 
    { v: 210, 
    f: '21 <img src="img/Gold.png"> <img src="img/Silver.png"> 10 <img src="img/Copper.png">' }, 
    { v: 1.38 } ] 

En utilisant console.log(<%= sendTableData%>) Le code est rendu comme suit:

console.log(83,[object Object],[object Object],[object Object]) 

Ce qui donne

identifiant inattendu 'objet'

erreur

EDIT2 Une autre approche que j'ai essayé utilise cependant JSON.stringify et JSON.parse quelque chose arrive à la chaîne quand envoi à l'aide res. des locaux. Petit morceau de la chaîne: ["83",{"v":294,"f":"29 est-ce quand ça arrive: &#34;83&#34;,{&#34;v&#34;:294,&#34;f&#34;:&#34;29. Cela change les guillemets? De toute façon je préférerais éviter cette méthode et l'envoyer comme c'est des données originales.

Édition3 La solution devait utiliser <% - myData%> côté client (notice - au lieu de =) après l'envoi de données sous forme de chaîne.

+0

Merci, cela fonctionne! Bit counter intuitif cependant, mais qui s'en soucie: D – SecondLemon

+0

Encore une question cependant, est-ce que cela le stocke comme une chaîne ou comme le format de données d'origine? (J'ai besoin de ce dernier, mais un test rapide ne semble pas fonctionner (ou quelque chose d'autre se passe)) EDIT: Il semble être devenu une chaîne (était tableau avec dictionnaires). Ne devrais-je pas utiliser res.locals pour cela? Ou comment pourrais-je résoudre ceci? – SecondLemon

+0

Je pense que cela fonctionnera mais j'ai un autre bug maintenant. Je reviens dans l'heure. – SecondLemon

Répondre

0

Utilisez le côté client suivant:

res.locals.myData = JSON.stringify(myData) 

Et le côté client suivant:

var tableData = <%- myData%>; // For .ejs 
var tableData = !{myData} // For .jade (I think)