전체 코드 중에서 로그인 유효성 검사를 할 수 있는 로그인 부분이 작동되지 않았다.
로그인을 안 하고 글 목록에 들어가면 작성 글을 읽으려면 먼저 alert가 뜨고 로그인을 하세요 라는 알림이 나와야하는데 안 뜨고 로그인을 하지 않더라도 작성 글들을 다 읽을 수 있는게 문제였다...
뭐가 문제인지 한참을 보다가,
로그인 부분에서 if 문 #memId가 적혀진 곳으로 보면 좋을 거 같아서
일단 boardList 관련된 파일들을 다 열어보았다.
그러다 발견한 것... boardList.jsp 파일에서 빠진 문구가 있었던 것!!!
boardList.js
//$(function(){});
$(document).ready(function(){
$.ajax({
type: 'post',
url: '/miniProject_jQuery/board/getBoardList.do',
data: 'pg=' + $('#pg').val(), //{'pg':$('#pg').val()} 문자형식이나 json형식 중 아무거나
dataType :'json', //서버로 부터 받는 데이터의 자료형 'text', 'html', 'xml', 'json' class타입의 객체는 빋을 자료형이 없다
//객체를 json으로 변환시켜서 가져와야 한다.
success: function(data){
//console.log(JSON.stringify(data)); //이렇게 찍어야 data를 json으로 제대로 보여줌
//console.log(data.list[0],seq);
//console.log(data.list[1],name);
$.each(data.list, function(index,items){
console.log(index + ", seq=" + items.seq + ', name=' + items.name);
$('<tr/>').append($('<td/>',{
align: 'center',
text: items.seq
})).append($('<td/>',{
}).append($('<a/>', {
href: '#',
class: 'subjectA subjectA_'+items.seq,
text: items.subject
}))
).append($('<td/>',{
align: 'center',
text: items.id
})).append($('<td/>',{
align: 'center',
text: items.hit
})).append($('<td/>',{
align: 'center',
text: items.logtime
})).appendTo($('#boardListTable'))
////답글///////
for(var i=1; i<=items.lev; i++){
$('.subjectA_'+items.seq).before(" ")
}
if(items.pseq != 0){
$('.subjectA_'+items.seq).before($('<img/>',{
'src': '/miniProject_jQuery/image/reply.gif'
}));
}
}); //each문이 for문과 똑같음 //여기까지 each문
//페이징 처리
$('#boardPagingDiv').html(data.pagingHTML);
//로그인 여부
$('.subjectA').click(function(){
if($('#memId').val() == '')
alert('먼저 로그인하세요');
else{
//console.log($(this).parent().prev().prop('tagName'));
var seq = $(this).parent().prev().text();
console.log(seq);
var pg = $('#pg').val();
location.href = '/miniProject_jQuery/board/boardView.do?seq='+seq+'&pg='+pg;
}
});
},
error: function(err){
console.log(err);
}
});
});
b
boardList.jsp
<body>
<input type= "text" id="pg" value="${pg }">
<input type="text" id="memId" value="${memId }">
<table id="boardListTable" border="1" cellpadding="5" cellspacing="0" frame="hsides" rules="rows">
<input type="text" id= "memId" value="${memId }"> 이 부분이 아예 없었다.....
그냥 memId가 없었지만 있다고 생각했었나보다.
없었음에도 불구하고 boardList.js에서는 if문이 굉장히 잘 돌아갔기 때문에 왜인가 했었는데,
만약 if($('#memId').val() 여기서 #memId가 없어도 뭔가 대체 되는게 있으니 에러가 터지지 않고 else로 빠진거를 증명하기 위해 if문을 쓰고 alert를 찍어보니 objct object가 나왔다.
빈 값이 아니라서 if 문이 시행되는 것이 맞았다.
++)) B학원을 같이 수강 중인 현지씨가 알려준, 추가 설명
/boardListT.jsp에서 ${memId}에 대한 값 설정이 이뤄지지 않았을 경우,
해당 변수가 선언조차 되지 않은 상태에서 값 조화를 실행하게 되는 것이므로 undefined 반환
이 undefined가 String 타입으로 받아서 하는 것이기 때문에 에러가 따로 터지지 않는 것
// 만일 memId라는 변수는 선언되었는데, scope 겁색 후 해당 변수의 값이 조화가 안된다면
// ${memId}, el 표현식 상 "" 빈값(empty)을 반환
어렵지만 이래도 돌아감
휴~ 하나 알아간다
'Java' 카테고리의 다른 글
[JAVA] 정수의 최대값, 최소값 출력 (0) | 2024.02.19 |
---|---|
[Java] chapter2. 변수(varibale) (0) | 2023.10.26 |
[JAVA] Java의 정석 기초/ 변수 (1) | 2023.10.23 |
[jQuery] 글 수정 (0) | 2023.04.03 |
JQuery board글쓰기 기능 (0) | 2023.03.28 |