• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

index에서 read more를 눌렀을때 글이 불려오질 않습니다.

21.09.28 18:47 작성 조회수 102

0

Index.php에서 글을 불러왓는데 db에서 글을 불러올 때, limit 3으로 했을때는 글이 2개가 불러져 오는데

limit 1로 하고, read more 버튼을 눌렀을때는 글이 불려오질 않네요ㅠㅠ

개발자 도구 열어서 확인해보니 아예 list가 불려오질 않더라구요..

계속 저 에러만 나네요..

js도 똑같이 썼는데 왜 그런걸까요ㅠㅠ

 

const $readmore = document.getElementById('readmore')
if ($readmore instanceof HTMLElement) {
  let page = 0
  $readmore.addEventListener('click', () => {
    fetch('/?page=' + ++page, { method'get' }).then(async response => {
    console.log('왜 안나오니');
    console.log(await response.text());
    const parser = new DOMParser();
    const doc = parser.parseFromString(await response.text(), 'text/html');
    const list = doc.querySelectorAll('.uk-container > .uk-list > li');
    if (list.length > 0) {
      Array.from(list).forEach(item => {
        document.querySelector('.uk-container').appendChild(item);
      });
    }
  });
});
}

 

const doc = parser.parseFromString(await response.text(), 'text/html');

이부분입니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 먼저, 오류가 발생하는 원인을 알아야 합니다.

시도해볼만한 방법으로는 js 에서
1. async/await 사용시 , try ~ catch 키워드 사용하여 메시지 잡기
2. Promise then ~ catch 메서드 사용하여 처리하기

둘 중에 하나를 처리해다면 요청시 에러 메시지를 받아올 수 있고, 원인을 알 수 있을지도 모릅니다. response.text() 가 올바르게 처리되지 못했다는 것은 서버에서 제대로 응답하지 못했다는 이야기이기도 하므로 HTTP 상태코드를 확인하고 php 에서도 디버깅을 시도해볼 필요가 있습니다. 이 경우, js 가 문제의 원인이 되는 것은 아닌 것으로 판단됩니다.

따라서 php 에서 쿼리 구문을 바꿔서 디버깅 또는 echo, print_r, var_dump() 로 응답하여 오류의 원인을 찾아보거나, 포스트 맨을 사용하여 경우에 따라 요청을 여럿 보내보면서 응답이 어떻게 오는지 잘 살펴보시길 바랍니다. 혹여나 쿼리의 문제가 발생할 가능성도 있다면  PDO::errorinfo() 를 통해 에러를 출력해보는 것도 좋습니다. 강의의 소스코드라고 할지라도 모든 오류와 버그에 대해 처리를 할 수는 없습니다. 이 점 유의바랍니다.