2011年12月12日月曜日

JavaScriptで何かをエンコードしてサーバへ渡すときのエンコード方法

JavaScriptでサーバに値をPOSTするなりGETのパラメータとして渡すなりするときのエンコード方法として下記の3つがある。

encodeURI
encodeURIComponent
escape

で、よく何使えばいいんだっけ?と忘れるので備忘録。

encodeURI
URLをエンコードするのに使用する。
たとえば下記を実行すると
encodeURI("http://www.chinu-kakariduri.com/Shop/Details/小浜漁協釣り筏");
下記になる。
http://www.chinu-kakariduri.com/Shop/Details/%E5%B0%8F%E6%B5%9C%E6%BC%81%E5%8D%94%E9%87%A3%E3%82%8A%E7%AD%8F


encodeURIComponent
URLのパラメータをエンコードするのに使用する。
たとえば下記を実行すると
var result = encodeURIComponent("http://www.chinu-kakariduri.com?p1=chinu&p2=kakariduri");
下記になるので
http%3A%2F%2Fwww.chinu-kakariduri.com%3Fp1%3Dchinu%26p2%3Dkakariduri
次のようにしてURLをURLのパラメータとして渡すことが可能になる。
var url = "http://www.somewhereelse.com?externalsite=" + result + "&p2=chinu";


escape
つかわなーい。
というのもescapeが出力するエンコーディングはW3C標準ではないのでサーバ側で正しく処理できないことが多く苦労するので使わないほうがよい。クライアントだけでエンコード、デコードする用途があるならありだと思う。

0 件のコメント:

コメントを投稿