jQueryからAjax経由でPHPにリクエストしCookieを操作する方法
先日PHPでCookie保存時にHttpOnly / Secure属性を設定する方法をメモしたが、HttpOnly属性が設定されていると当然JavaScript / jQueryから当該Cookieは取り扱えない。ただ、Ajax経由でPHPにリクエストすれば取り扱えそう。以下にソースコードをメモ。
ソースコード
Ajax側
Ajax経由でPHPにリクエストしCookieのon / offを#result部分に反映するという内容になる。
<div id="result"> <?php if( isset($_COOKIE['test_cookie']) ){ ?> on <?php }else{ ?> off <?php } ?> </div> <button id="cookie_btn">cookie btn</button> <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script> $(function(){ $(`#cookie_btn`).on(`click`, function(){ $.ajax({ url:'./set_cookie.php', type: 'POST', }).done(function(result){ if( result == 0 ){ $(`#result`).text(`off`); }else if( result == 1 ){ $(`#result`).text(`on`); }else{ alert('エラーが発生しました。'); } }).fail(function() { alert('エラーが発生しました。'); }).always(function() { }); }); }); </script>
受け取り側
エラーチェック等は入っていない点に注意。
<?php if( isset($_COOKIE['test_cookie']) ){ $cookie_options = array( 'expires' => time() - 3600, 'path' => '/', ); setcookie('test_cookie', '', $cookie_options); $return = 0; }else{ $cookie_options = array( 'expires' => time() + 3600, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ); setcookie('test_cookie', true, $cookie_options); $return = 1; } echo $return;
所感
Ajax部分のソースコードが増えるのでやや面倒なものの、これでJavaScript / jQueryからもCookieを取り扱えそう。
関連記事
-
-
日付入力のテキストフォームにカレンダープラグインを導入
やりたかった事と制限は下記の通り。 ・日付入力のテキストフォームにカレンダープラ ...
-
-
jQueryで画像(
タグ内)のsrc情報を取得する場合
すぐに出てこなかったのでメモ。 $('#test').attr('src'); ...
-
-
「jQuery.browser is undefined」エラーの対応方法
jQueryのプラグインを使っていて1.9以降だと「jQuery.browser ...
-
-
NicEdit(WYSIWYGエディタ)を再描写時にサイズを調整する方法
NicEdit(WYSIWYGエディタ)を設置しているサイトがあった。ページ読み ...
-
-
指定した要素に注釈を設定できる「Chardin.js」プラグインの利用方法
指定した要素に注釈を入れることができるjQueryプラグイン「Chardin.j ...