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の「DateTimePicker」プラグインで日付や時間選択時に指定したイベントを実行させる方法
jQueryの「DateTimePicker」プラグインで日付や時間選択時、あら ...
-
-
JavaScript / jQueryにてページ表示時に指定したテキストボックスにフォーカスさせる方法
ページを開いた際に指定したテキストボックス(input type="text") ...
-
-
adblock(広告削除)設定している場合はページを表示させない
iPhoneのSleipnirでネットをしていると「広告がブロックされたのでペー ...
-
-
オリジナルのjQueryプラグインを作成する方法
オリジナルのjQueryプラグインを作ってみたかった。というのも大抵のものはググ ...
-
-
NicEdit(WYSIWYGエディタ)とテキストエリアの切り替え
チェックボックスのON / OFFでNicEdit(WYSIWYGエディタ)とt ...