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を取り扱えそう。
関連記事
-
-
JavaScript / jQueryで〇番目、最初、最後の要素を指定する方法
jQueryでリストタグ(<li>)の〇番目、最初、最後の要素を指定 ...
-
-
jQueryでiframe内の要素を呼び出し
jQueryでiframeで開いたbody内の内容が欲しかった。 ■jQuery ...
-
-
日本地図のクリッカブルマップをjQueryで実装する方法(japan-map)
JavaScriptもしくはjQueryで日本地図を表示し、都道府県や八地方区分 ...
-
-
Ajaxでプラグイン無しのファイルアップロード方法
画像ファイルを添付できて、尚且つAjaxを用いた非同期通信のフォームを作りたかっ ...
-
-
amazon等のECサイトによくにあるアイテムの満足度を星マークで送信・表示する方法
amazon等のECサイトによくにあるアイテムの満足度を星マークかつ5段階で送信 ...