てきとうなメモ

本の感想とか技術メモとか

encodeURIComponent/decodeURIComponentにはまる

js> decodeURIComponent('+')
+
js> encodeURIComponent(' ')
%20

'+'が' 'にデコードされないし,' 'は%20にエンコードされる.

直接使っていればわかるんだけども,ライブラリ(prototype.js)経由だとわかりにくい.

var ajax = new Ajax.Request(url, {method: 'get', parameters: 'foo+bar', onSuccess: success});

parametersにはエンコードされたクエリ文字列を入れるという仕様なのだが,そのままparameterをくっつけてGETしているのかと思ったらdecodeURIComponentしてencodeURIComponentしていたので'foo bar'ではなく'foo+bar'でGETしていた.