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を取り扱えそう。
関連記事
-
-
HTMLのカスタムデータ属性をjQueryで取得する際はキャッシュに注意する
ASPを使用したサイトでHTMLのカスタムデータ属性を取得し色々処理したかったん ...
-
-
jQueryで画像(
タグ内)のsrc情報を取得する場合
すぐに出てこなかったのでメモ。 $('#test').attr('src'); ...
-
-
jQueryにて指定した要素の親要素を削除する方法
jQueryにて指定した要素の親要素を削除したいケースがあった。通常の場合だと親 ...
-
-
Dropzone.jsを使って画像をドラッグ&ドロップでアップロードする方法
画像を複数枚ドラッグ&ドロップでアップロードしたかった。だいぶ前にDro ...
-
-
amazon等のECサイトによくにあるアイテムの満足度を星マークで送信・表示する方法
amazon等のECサイトによくにあるアイテムの満足度を星マークかつ5段階で送信 ...