hitode909の日記

趣味はマリンスポーツですの日記です

クライアントサイドでリクエストパラメータ取ったり作ったりするやつ,毎回コピペして使ってるのがあるので共有します.

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))


よろしくお願いいたします.