LoginSignup
17
15

More than 5 years have passed since last update.

【未解決部あり】express+ejsで配列をクライアント側のjsに渡す方法

Last updated at Posted at 2014-07-06

express+ejsでオブジェクトを含む配列をクライアント側のjsに渡す方法に嵌ったのでメモ。

サーバー側のコードがこれ。普通にキーと値(配列)をejsテンプレートにセットにすればいい。

test

var roominfo = function(roomname){
this.roomname=roomname;
};

room_info_array= new Array(1);
room_info_array[0]=new roominfo("room");

app.get("/", function(req, res){
res.render('login',{room_info:room_info_array});
});

クライアント側がこう。

test
<script type="text/javascript">
var data = <%- JSON.stringify(room_info) %>
</script>

ポイントは<%- %>にすること。<%= %>ではない。後者だと渡した値を勝手にエスケープ処理してしまってオブジェクトとして認識してくれない。

この部分は解決したんだけど、まだ実現できていないことがある。

Socket.ioのconnection内で代入した値をテンプレートに渡せない。

test
io.sockets.on('connection', function(socket) {
//この中でroom_infoの値を操作して、新しく"/"にアクセスして来たクライアントにroom_infoの値を渡したいが、nullになる。
});

expressを使って渡そうとするのがそもそも間違いなのかな? 普通にクライアントに配列渡すメソッド定義すればやりたいことは実現できると思うけど・・・・

17
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15