クライアントサイドでリクエストパラメータ取ったり作ったりするやつ,毎回コピペして使ってるのがあるので共有します.
Page = parseQuery: (query_string) -> query = {} for pair in query_string.split('&') [k, v] = pair.split('=') query[decodeURIComponent(k)] = decodeURIComponent(v) query createQuery: (query) -> keys = (key for key of query).sort() ("#{encodeURIComponent(key)}=#{encodeURIComponent(query[key])}" for key in keys).join('&')
これは何かというと,?foo=barみたいなのと,{foo: 'bar'}みたいなのを相互変換するやつ.foo=1&foo=2 みたいなのには対応してないから不完全だけど,そういうURL使わなければなんとかなる.
createQueryはjQuery.paramでできるけどparamっていう名前毎回忘れて結局使えない.param覚えられる人いたらそのほうがいいと思う.
これもよく使う.こっちはlocation.hashに値を保存したいときに使う.こっちは{foo: [1, 2]} とかなんでも保存できる.そのかわりURLめっちゃ長くなる.こんなことやってる人はあまり見かけない.
PageHash = load: -> JSON.parse(decodeURIComponent(location.hash.substr(1, location.hash.length))) save: (status) -> location.hash = encodeURIComponent(JSON.stringify(status))
よろしくお願いいたします.