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していた.