ajax 3賛機能の追加
思い出すのは簡単そうだが、設計するのは難しい.
/board tableにlike count列(賛数を格納)
(または顧客番号)likeをスキップするかどうかを問い合わせる必要があります.
「いいね」を注文したら、もう記入しました.
タイムラインがない場合は、挿入し、ある場合はキャンセルします.
削除します.
「いいね」を押すたびにリフレッシュして情報を受信します.
create table board_table(
b_number bigint auto_increment,
cate_number int,
m_id varchar(20),
b_title varchar(20) not null,
b_contents varchar(1000) not null,
b_date datetime not null,
b_hits int default 0,
b_filename varchar(100),
like_count int default 0,
constraint primary key (b_number),
constraint foreign key(m_id) references member_table(m_id) on delete cascade,
constraint foreign key(cate_number) references category_table(cate_number)
);
create table like_table (
like_number bigint auto_increment,
m_id varchar(20),
b_number bigint,
like_check int default 0,
constraint primary key (like_number),
constraint foreign key(m_id) references member_table(m_id) on delete cascade,
constraint foreign key(b_number) references board_table(b_number) on delete cascade
);
jspセッション値を使用してログインしているかどうかを確認
<body>
<c:if test="${sessionScope.loginId == null || sessionScope.loginId eq 'guest'}">
<img src="/resources/img/좋아요전.png" id="likeimg" width="60px" height="60px"
class="rounded-circle mt-2">
${b.like_count} <br><br>
추천 기능은 <a href="/member/login" type="button" id="newLogin"
class="btn btn-outline-success">로그인</a> 후 사용 가능합니다.
</c:if>
<c:if test="${sessionScope.loginId != null}">
<div>
<input type="hidden" id="like_check" value="${like.like_check}">
<img class="rounded-circle likeimg" id="likeimg" src="/resources/img/좋아요전.png"
width="60px" height="60px"> ${b.like_count}
</div>
</c:if>
</body>
投稿詳細照会に入るとIDをチェック!$(document).ready(function ()
:ドキュメント構造の作成時に実行されるイベント
みなさんにどんなものを見せたらいいですか?
<script>
$(document).ready(function () {
let like_count = document.getElementById('like_count')
let likeval = document.getElementById('like_check').value
const b_number = '${b.b_number}';
const m_id = "${sessionScope.loginId}";
const likeimg = document.getElementById("likeimg")
if (likeval > 0) {
likeimg.src = "/resources/img/좋아요후.png";
}
else {
likeimg.src = "/resources/img/좋아요전.png";
}
// 좋아요 버튼을 클릭 시 실행되는 코드
$(".likeimg").on("click", function () {
$.ajax({
url: '/board/like',
type: 'POST',
data: { 'b_number': b_number, 'm_id': m_id },
success: function (data) {
if (data == 1) {
$("#likeimg").attr("src", "/resources/img/좋아요후.png");
location.reload();
} else {
$("#likeimg").attr("src", "/resources/img/좋아요전.png");
location.reload();
}
}, error: function () {
$("#likeimg").attr("src", "/resources/img/좋아요후.png");
console.log('오타 찾으세요')
}
});
});
});
</script>
毎日混同しています!#ID名(宣言者:#).CLASS名(宣言者:.)
『学んだこと』
jクエリからid class name値を取得する
idのインポート
let valueById = $('#inputId').val();
classのインポート
let valueByClass = $('.inputClass').val();
インポートname
let valueByName = $('input[name=inputName]').val();
どの属性値を取得および制御するか
$('#test').attr('value')
$('#test').attr('src','/resources/img/img.png')
$('#test').attr('disabled','')
まだ間違いがある!
success:function()のajax値
結果を書くのにずっと間違いがあった.
データで記録するのがいいです.どうして泣いているの?
検索しても見つからないから探しましょう!
Reference
この問題について(ajax 3賛機能の追加), 我々は、より多くの情報をここで見つけました https://velog.io/@hellocdpa/좋아요-기능-넣기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol