昨天聽 othree 提到 jquery-ujs (Unobtrusive scripting adapter for jQuery),裡面有不少 convention 可以直接套用。othree 在三月有寫一篇文章介紹:「jQuery-ujs」。
雖然 repository 看起來是給 RoR 使用,但直接把 rails.js 抓下來用「<script src="rails.js"></script>
」掛上來,還是可以用在非 RoR 環境裡。
直接看 code 也很好懂,舉幾個例子來說:
<?php $sToken = hash('sha256', session_id()); ?> <meta name="csrf-token" content="<?php echo $sToken; ?>"> <meta name="csrf-param" content="sToken">
表示 CSRF token 名稱為 sToken
,值為 hash('sha256', sesssion_id())
。
對於想要先跳出 confirm dialog,再決定要不要繼續執行的連結,可以加上 data-confirm
表示:
<a href="/delete/1" data-confirm="是否要刪除?">
如果要用 POST (上面的 delete operation 不應該用 GET,因為資料被變更),可以加上 data-method
:
<a href="/delete/1" data-confirm="是否要刪除?" data-method="post">
或是直接用 DELETE,在 server side 可以讀 _method
這個值:
<a href="/delete/1" data-confirm="是否要刪除?" data-method="delete">
最後,建議大家去看 jquery-ujs 的 wiki,上面有針對用法有比較完整的說明,配著 source code 一起看會比較容易上手。
我最喜歡就是它的 convention 訂的很棒,完全不用花自己大腦想,而且不用 Rails 要自己實作也不難