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で指定した要素を簡単にフォーカスするfocusbleの使い方
divやspanなど指定した要素を簡単にフォーカスするjQueryプラグインがあ ...
-
-
AjaxにてHTTPリクエストメソッドをDELETE / PUTで送信する方法
あるAPIにAjaxでリクエストする際、GET / POSTではなくDELETE ...
-
-
CodeIgniter4&Bootstrap&jQueryで簡易版お問い合わせページの作成
CodeIgniter4.4.4&Bootstrap&jQuer ...
-
-
画像をドラッグ&ドロップでアップロード
■2015/04/15追記 以下記事の方が新しくて詳しい。 http://tai ...
-
-
JavaScript / jQueryで〇番目、最初、最後の要素を指定する方法
jQueryでリストタグ(<li>)の〇番目、最初、最後の要素を指定 ...