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を取り扱えそう。
関連記事
-
adblock(広告削除)設定している場合はページを表示させない
iPhoneのSleipnirでネットをしていると「広告がブロックされたのでペー ...
-
jQueryのfind実行時に複数のセレクタを指定する方法
jQueryのfind()実行時に複数のセレクタを指定したい。 <div ...
-
ラジオボタンのカスタムデータ属性を取得し、特定の値の場合はチェックさせない方法
ASPを使用したサイトで特定のradioボタンは選択不可にしたいというケースがあ ...
-
八地方区分→都道府県→路線→駅名の連携したセレクトメニュー の実装方法
八地方区分(関東、近畿等)をプルダウンから選ぶと区分内の都道府県プルダウンが表示 ...
-
jQueryで電話番号チェック
やりたかったことはjavascriptかjQueryで 電話番号のバリデート。 ...