CI 묻고 답하기

제목 ajax사용 시 페이지네이션 질문입니다. + (페이징a태그의 링크 강제로 없애는 법)
카테고리 CI 2, 3
글쓴이 소연신 작성시각 2017/02/23 18:20:26
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 20668   RSS

아...아침부터 이상한걸로 힘빼서ㅜ

 

현재 ajax로 게시판 리스트 가져오고 있는데요. 페이지네이션 적용해서 페이징 뜨고 .. 한 화면에 원하는 갯수 출력했는데 다음페이지로 넘어가질 않네요. 계속 $page 값이 1이고.. 이거 segment값을 ajax로 따로 넘겨줘야 하나요?

 

주소창에 쳐도 그대로네요ㅜ

 

 

2. 게시글 리스트는 ajax로 가져오고 있습니다...페이징은 ajax가 아니고 바로 뿌려줄 수 있나요? 현재 Board 컨트롤러는 링크만 연결해 주고 있고 ajax는 Ajax_board에서 처리하고 있습니다.

 

3. 링크를 없애고 클릭시 ajax를 다시 호출하여 값을 그려야 되는 거같은데... 링크를 없애야 이게 실행이 될텐데 어떻게 없애나요?ㅜㅜ

 다음글 multi_upload 오류 (2)
 이전글 코드이그나이터 성능 (4)

댓글

kaido / 2017/02/24 09:00:46 / 추천 0

1. ajax로 불러오니 ajax로 파라메터를 넘겨서 받아오셔야 합니다. 당연하게도 해당 게시글들 전부 지우고 다시 그려야 하구요.

2. 가능합니다. 일종에 트릭입니다. 초기에는 게시글과 링크글을 동기화로 호출하고, 링크 부를때부터 ajax로 처리 하면 됩니다.

3. jqeury .remove() 가 도움이 되실 것입니다.

소연신 / 2017/02/24 10:08:16 / 추천 0

@kaido

답변 감사합니다. 언제나 도움 많이 되고 있습니다. 고맙습니다.

한 가지 더 여쭤볼 게 있는데요.

1. 일단removeAttr로 href는 없앴습니다.  근데... 페이징이 1 2 3 > >> 이런식으로 있다면..이거 하나하나 특정이 안되는 거 같습니다. 페이징 전체가 div class=paging로 되어 있어 전체로는 작동이 되는데요..  아무래도 한 번에 넘어오는 거라 그런 거 같은데..이 부분 어떻게 처리하셨는지요ㅜㅜ

 

2. $page 값을 컨트롤러에 넘겨줘야 될텐데.. 2page면 2 3page면 3을 넘겨주는데 이걸 반복문으로 하나씩 보내주나요? 

3. /Board/lists/free/page/1 페이지 링크는 이렇게 나옵니다. 저 맨 뒤 페이지 숫자는 뭘로 나오는건가요? 앞에 주소는 base_url인데.. 그것만 지우니 숫자만 나오더라구요. 암만 찾아도 못찾겠어서ㅜ 저 숫자를 링크가 아닌 다른 걸로 줘서 저걸 ajax로 다시 넘기면 될 거 같은데...아..ㅜ

 

 

제가 지금 정리가 안 되는 거 같습니다ㅜ

정리를 해보자면..기존에는 segment로 page를 알아와 그걸로 offset을 줬다면 ajax는 그게 안 되니 이 페이지 값을 클릭 시 마다 줘서 다시 뿌려줘야 됩니다.(이렇게 이해했습니다.) 

정수리 / 2017/02/24 10:16:51 / 추천 0

저도 ajax로 페이지네이션 처리할때 어려움이 있었는데 다른 분께서 이 링크를 통해 해결하셨다고해서

 

저도 보고 따라해봤는데 쉽게 해결되더라구요

 

도움이 되었으면 좋겠네요

 

https://www.youtube.com/watch?v=nv7UEQ3l4ZM&list=PLEA11F5D54BD81B99&index=6

소연신 / 2017/02/24 10:38:07 / 추천 0

@정수리

동영상 잘 봤습니다. 고맙습니다.

한 가지 여쭤보면.. 동영상은 페이징을 뷰로 바로 뿌려주고 있던데.. 혹시 그렇게 하셨나요? 저는 뷰를 board 컨트롤러로 로딩하고 게시물 리스트 가져오는 ajax처리는 ajax_board 컨트롤러로 따로 만들어서 처리했습니다. 그래서 게시물 리스트랑 페이징을 ajax로 받아서 js로 그렸거든요.

kaido / 2017/02/24 11:43:54 / 추천 0

1. removeAttr 이 아니라 remove 입니다. 아예 지우고 새로 그리시는게 빠릅니다.

2. page num link 생성은 관련 알고리즘을 보시면 되실것 같습니다. 보통은 ci에서 사용하는 라이브러리 사용하시면 됩니다.

3. 해당 링크의 숫자는 보통 page 숫자 맞습니다.  $this->uri->segment(5) 이렇게 가져오셔도 좋고 아예 get string 방식으로 바꿔서 ?page=1 이렇게 바꾸셔도 좋습니다.

2개의 페이지네이션이 동시에 등장한다던가 복잡한 다중 검색 로직넣기 시작 하면 uri으로 컨트롤 하는 것보다는 get 방식으로 만드시는것이 훨씬 수월 합니다.

 

ajax 페이지네이션은 사실 하나도 어려운 개념이 아닙니다.

제가 관련 질문이 오면 매번 하는 말이 있습니다.

 

ajax 빼고 동기화로 먼저 만든 다음에 이걸 ajax 화 시켜라.

 

퍼포먼스 계산과 ajax의 고질적인 싱글톤 리턴 반응등을 생각 해보면 동기화 방식과 비동기화 방식 둘다 적절히 섞어 주시는게 좋습니다^^

 

먼저 동기화 방식으로 구현 하신다음에, 어떤 파라메터들이 넘어가고, 어떤 파라메터들이 필요한지 정리해보세요.

그럼 답은 나옵니다.

 

샤오란 / 2017/02/24 11:50:34 / 추천 0
ajax 빼고 동기화로 먼저 만든 다음에 이걸 ajax 화 시켜라. 이말이 정답!
정수리 / 2017/02/24 12:50:44 / 추천 0

소연신 

저같은 경우 아직 많이 부족해서 동영상에서 나오는 방법대로 처리하였습니다

아직 많이 부족해서 말씀하신 부분에 대해 정확하게 이해를 못하는데

게시물리스트와 페이징으로 한 컨트롤에서 가져오는것이 아닌 서로 다른 컨트롤러에서 가져오시는거죠??

그렇다면 페이지를 이동할때 마다 두개의 컨트롤를 호출하여 가져오면 되지않을까요..

 

소연신 / 2017/02/24 13:36:00 / 추천 0

@kaido 샤오란 정수리

답변 감사합니다.

뭐 어떻게 하다보니.. json_decode 로 넘어온 페이지번호 처리해주니.. 페이지는 넘어갑니다. 페이징이 현재 페이지를 잡지는 못하고 있긴 하지만요ㅋㅋㅋㅋ 이건.. 어떻게 해야될지 또 고민해봐야겠네요ㅜ

소연신 / 2017/02/24 14:07:06 / 추천 0

@kaido

ajax로 넘어오는 페이징을 지우고 그려서 넣었고..그러면 동작은 됩니다. 근데... 이거 이렇게 써야 되는건가요? 만약에  현재 페이지 중심으로 보여지는 페이지 수를 늘리고 싶으면 js수정해서 늘려야 되고.. 줄이면 수정해서 줄여야되고.. 여러가지 불편해질거 같은데.. 제가 접근 방법이 불편하게 접근한건지.. 모르곘네요. 게시판이 여러개고.. 게시판마다 페이징을 그려줘야 되는 건가 싶고...(나타내는 갯수가 다를 수 있을테니)ㅜㅜ

kaido / 2017/02/24 15:19:18 / 추천 0

네 맞습니다.

ajax 페이지 네이션은  어렵다기 보다는 번거로운 녀석입니다 ㅎㅎㅎ

전 그래서 jquery .load() 를 사용했습죠.

잘 사용하면 정말 꿀입니다.

사용방법과 노하우는 정리해서 한번 올려봐야겠네요 ^^

소연신 / 2017/02/24 15:30:06 / 추천 0

@kaido

아; 맞는 거였군요ㅜㅜ 설마 이렇게 해야되나 싶어서 망설였는데ㅜㅜ 이것때문에 또 시간을 얼마나 잡아먹은건지 ㅋㅋㅋㅋ 답변 언제나 고맙습니다. 항상 많이 배우고 있습니다. 곧 있으면 주말인데 즐겁게 보내세요! 노하우는 기대하고 있겠습니다. ㅎㅎ