JavascriptでcakeCookieを読む [cakePHP]
cakePHPのソースの中で、
みたいに書いてクッキーを保存したとします。
※ソースの詳細は省略します。
そちらのCookie情報をJavascriptで読み取るには、
こんな感じのFunctionを作って、それを
で読み出せばOKだと思ったんだが、上手く行かない。
なんだろ?と思って、CookieをConsoleに書き出してみて、「もしや?」と気づく。
そうなんです。
「 name」
という感じで、nameの前に半角スペースが入ってるんですね。
なので、最初のコードでresをsplitして配列にしたすぐ後で、
とやって、両端に半角スペースがあったら取っ払う。
phpみたいにtrimが無いので正規表現使ってreplaseする訳ですね。
これで、取得できました。
Cookieはほんとに単なる文字列なんだなぁ。と改めて実感。
さて、もう一息がんばろ。
※cakePHPはvar1.3
$this->Cookie->write('name',serialize($this->data),false,time()+259200);
みたいに書いてクッキーを保存したとします。
※ソースの詳細は省略します。
そちらのCookie情報をJavascriptで読み取るには、
function getCookie(name) { var ck = document.cookie.split(';'); for (var i=0; i < ck.length; i++) { var res = ck[i].split('='); if ( res[0] == name ) { return decodeURIComponent(res[1]); } } }
こんな感じのFunctionを作って、それを
var ck = getCookie('CakeCookie[name]');
で読み出せばOKだと思ったんだが、上手く行かない。
なんだろ?と思って、CookieをConsoleに書き出してみて、「もしや?」と気づく。
そうなんです。
「 name」
という感じで、nameの前に半角スペースが入ってるんですね。
なので、最初のコードでresをsplitして配列にしたすぐ後で、
res[0] = res[0].replace(/^\s+|\s+$/g, "");
とやって、両端に半角スペースがあったら取っ払う。
phpみたいにtrimが無いので正規表現使ってreplaseする訳ですね。
これで、取得できました。
Cookieはほんとに単なる文字列なんだなぁ。と改めて実感。
さて、もう一息がんばろ。
※cakePHPはvar1.3
コメント 0