RailsでjQueryなどの今時なライブラリを使わずにAjaxに挑んだメモ
RailsでフツーのGETではsessionが取得出来てるのに、AjaxでPOSTしたときはなぜかsessionが取得できない。POSTだから? Ajaxはセッション使えない? まさかjQueryがその辺上手く処理してた? そんな阿呆な。
jquery - Rails not reloading session on ajax post - Stack Overflow
上記ページによれば、リクエストのヘッダにCSRF tokenを入れましょうとのこと。CSRF tokenは、HTMLのヘッダに入っている下のヤツ。
<head> <meta name="csrf-token" content="16nHoplPHvBSpKzha3p6FRfaldfkjadkdammydammydammy="> </head>
getElementsByTagName()で取得するのだろうか。jQuery のセレクターに慣れきった体には、素のjavascriptで取得するのは大変だなと思っていたら、namedItem()というのを発見。JavaのDomの解説ですが、下記の通り。
名前を使用して Node を取得します。まず id 属性が一致する Node を検索します。該当しなかった場合は name 属性が一致する Node を検索します。ただし検索対象は name 属性のある要素に限られます。
これで無事にsession取得できました。
追記:document.getElementsByName()で取得しました。namedItem()は、Safariでは動かなかったため。
久々に native の javascript で Ajax 処理書いてましたが、Cross-Browser XMLHttpRequest - Web Site Design - Andrew Gregory's Web Pages はさすがに利用した。