Я получил эту ошибку. но, кажется, хорошо понимает "keyField". потому что показывает bTitle!
list.do:29 Uncaught ReferenceError: bTitle is not defined
at PageMove (list.do:29)
at <anonymous>:1:1
когда я ищу конкретное слово, оно хорошо показывает страницы и сообщения на первой странице.
но когда я перехожу на страницу 2 или следующую страницу, ключевое слово поиска не применяется и не может перейти на следующую страницу.
но по-прежнему не могу перейти на следующую страницу. это проблема с адресом?
это мой код!
<%
String keyWord = (String)request.getParameter("keyWord");
String keyField = (String)request.getParameter("keyField");
%>
<script>
function searchCheck(frm){
//검색
if (frm.keyWord.value = = ""){
alert("검색 단어를 입력하세요.");
frm.keyWord.focus();
return;
}
frm.submit();
}
function PageMove(page){
var keyWord = <%=keyWord%>
var keyField = <%=keyField%>
console.info(keyWord);
if (keyWord && keyField){
location.href = "list.do?page = "+page+"&keyWord = " + keyWord + "&keyField = " + keyField;
}
location.href = "list.do?page = "+page;
}
</script>
<table width = "800" cellpadding = "0" cellspacing = "0" border = "1">
<tr>
<td>번호</td>
<td>이름</td>
<td>제목</td>
<td>날짜</td>
<td>히트</td>
</tr>
<c:forEach items = "${list}" var = "dto">
<tr>
<td>${dto.bId}</td>
<td>${dto.bName}</td>
<td>
<c:forEach begin = "1" end = "${dto.bIndent}">-</c:forEach>
<a href = "content_view.do?bId=${dto.bId}">${dto.bTitle}</a></td>
<td>${dto.bDate}</td>
<td>${dto.bHit}</td>
</tr>
</c:forEach>
<tr>
<td colspan = "5">
<form action = "list.do" method = "post" name = "search">
<select name = "keyField">
<option value = "bTitle">글 제목</option>
<option value = "bContent">글 내용</option>
<option value = "bName">작성자</option>
</select>
<input type = "text" name = "keyWord">
<input type = "button" value = "검색" onclick = "searchCheck(form)">
<%-- <input type = "hidden" value = "${keyWord}">
<input type = "hidden" value = "${keyField}"> --%>
</form>
</td>
</tr>
<tr>
<td colspan = "5"> <a href = "write_view.do">글작성</a> </td>
</tr>
</table>
<%=PageAction.pageNumber() %>
<div class = "toolbar-bottom">
<div class = "toolbar mt-lg">
<div class = "sorter">
<ul class = "pagination">
<li><a href = "javascript:PageMove(${paging.firstPageNo})">맨앞으로</a></li>
<li><a href = "javascript:PageMove(${paging.prevPageNo})">앞으로</a></li>
<c:forEach var = "i" begin = "${paging.startPageNo}" end = "${paging.endPageNo}" step = "1">
<c:choose>
<c:when test = "${i eq paging.pageNo}">
<li class = "active"><a href = "javascript:PageMove(${i})">${i}</a></li>
</c:when>
<c:otherwise>
<li><a href = "javascript:PageMove(${i})">${i}</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
<li><a href = "javascript:PageMove(${paging.nextPageNo})">뒤로</a></li>
<li><a href = "javascript:PageMove(${paging.finalPageNo})">맨뒤로</a></li>
</ul>
</div>
</div>
</div>
BListCommand.java
public class BListCommand implements BCommand {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
BDao dao = new BDao();
String keyField = request.getParameter("keyField");
String keyWord = request.getParameter("keyWord");
System.out.println("키워드는~~:??"+keyField);
List<BDto> dtos ;
int totalCount = dao.getTotalRecord(keyField,keyWord);
System.out.println(totalCount);
int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
Paging paging = new Paging();
paging.setPageNo(page); //get방식의 parameter값으로 반은 page변수, 현재 페이지 번호
paging.setPageSize(10); // 한페이지에 불러낼 게시물의 개수 지정
paging.setTotalCount(totalCount);
paging.setKeyField(keyField);
paging.setKeyWord(keyWord);
System.out.println("페이지넘버BListCommand"+page);
page = (page - 1) * 10; //select해오는 기준을 구한다.
System.out.println("페이지넘버BListCommand"+page);
int endpage=page+10;
dtos = dao.getBoardList(page+1, endpage,keyField,keyWord);
request.setAttribute("paging", paging);
request.setAttribute("list", dtos);
request.setAttribute("keyField", paging.getkeyField());
request.setAttribute("keyWord", paging.getKeyWord());
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я почти уверен, что вы хотели, чтобы ваши значения переменных были строками. Вам нужно написать:
var keyWord = '<%=keyWord%>'
var keyField = '<%=keyField%>'
Обратите внимание на одинарные кавычки вокруг вывода Java. Это заставит JavaScript обрабатывать выходные значения как строки. Прямо сейчас способ их вывода означает, что он видит их как имена переменных, но, конечно, эти переменные не существуют в вашем JavaScript.
Извините, я не совсем понимаю, что вы имеете в виду. Возможно, вам лучше задать новый вопрос об этом, тогда вы сможете привести более подробную информацию и соответствующий пример.
Благодарность! оно работает. Вы хоть представляете, почему ключевое слово для поиска не применяется? Тем не менее, когда я ищу конкретное слово, классифицируется только первая страница. следующая страница показывает исходную следующую страницу :(