페이지 링크, 카테고리 링크, 확장변수 링크, 검색 인풋, 태그 링크 등을 ajax 처리해서

윈도우 새로고침 없이 #document_list만 리로드하는 걸 구현했습니다.

일종의 필터링을 통해서 문서 리스트를 다이내믹하게 나타내려는 목적입니다.

 

그런데 setQuery가 누적되지 않고 각각의 onclick 이벤트가 따로 놀아서 애를 먹고 있습니다.

즉, 페이지네이션을 클릭해서 page=3을 로드한 다음에 분류 목록을 클릭해서 category=365를 로드하면 page=3이 사라지는 식이죠.

물론 카테고리쪽 함수에서 'page', '' 같은 건 전혀 입력한 적이 없구요.

 

history.pushState로 확인을 해봐도 ajax 호출된 쿼리가 중복되지 않고 리뉴얼되기만 하는 걸 확인할 수 있었습니다.

아마도 ajax 호출 이전에 윈도우가 처음 로드됐을 당시를 current_url로 기억해서 그런 것 같아요.

 

=> ajax 처리를 통해 여러 개의 onclick 이벤트를 중복했을 때 문서 리스트를 누적적으로 필터링할 수 있는 방법이 없을까요?

  • ?
    후하니 2016.09.14 01:59:02
    음.. 따로 전역변수를 만들어서 setQuery를 누적시키면 어떨련지..
  • profile
    윤삼 2016.09.14 02:24:21

    pushState로 주소창에 출력된 주소를 전역변수로 담을 수 있나요? 어떻게 해야 할지...

    혼자서 한다고 해봤는데 전혀 감이 잡히질 않습니다;;;

  • ?
    후하니 2016.09.14 08:25:49

    pushState로 변경된 url 가져오는거면
    $(window).bind("popstate", function() {
    var href = location.href;
    });

    이렇게 가져오면 되지 않나요?

    저기서 var 빼면 전역변수 될거고..

  • profile
    윤삼 2016.09.14 10:51:22

    여전히 쉽지가 않네요.
    주신 소스로 함수를 감싸보기도 하고, 함수 안 여기저기에 넣고 심지어 바깥에 넣어보기도 했는데, 함수를 찾을 수 없다면서 링크가 중지됩니다.
    연휴 지나고 기회가 되면 소스 정리해서 올려보도록 할게요.
    명절 연휴에 폐를 끼칠 순 없으니...

    (json을 불러오거나 pjax로 갈아타야 하나 싶기도 하고 그러네요. 하아, 그건 또 어떤 세상일까...)

  • profile
    팦팦 2016.09.14 12:03:10

    어떤 식으로 로드하시는지 잘 모르겠지만.. ajax가 success 할때마다 pushState로 url을 계속 변경해주시거나 current_url 값을 다시 입력해주면 되지 않을까요?

    예를 들어 jquery를 쓰시면

    var req_url = current_url.setQuery('~~');

    $.ajax ({
    url : req_url,
    ~~
    success : function () {
    current_url = req_url;
    또는
    history.pushState('','', req_url);

    // 이경우엔 location.href 로 url 을 불러와야 할 듯하네요.
    }
    })

    1
  • profile
    윤삼 2016.09.14 12:40:48

    네, 언질해주신 방식으로 로드를 하고 있습니다.
    ... 되, 됩니다!!! 끄아~~~ 감사합니다!!!

    success에서 current_url을 재정의해줘야 했군요.
    더불어,
    current_url = req_url;
    history.pushState('','', current_url);
    로 해줬더니 pushState랑도 잘 어울리구요.

    몇 일 동안 혼자 끙끙 앓다시피 했는데, 덕분에 큰 도움을 얻었습니다.
    진짜진짜 감사드려요.

  • profile
    팦팦 2016.09.14 17:02:10
    잘된다니 다행이네요.! 그나저나 결과물이 기대됩니다 ㅎㅎ^^
  • profile
    윤삼 2016.09.14 20:51:01

    아니에요 아니에요 개인적으로 습작 삼아 하는 것이어서 허접하기 비할 데가 없어요.
    지금은 사이트 잠금 해놓고 실험실처럼 놀고 있을 뿐인데, 어디에 내놓을 처지는 꿈고 못 꾸죠.

    암튼 덕분에 뭔가 길이 보이기 시작해서 천만다행입니다. 그리고 조금 더 꼼꼼하게 생각해볼 걸 하는 아쉬움도 남고 막 그럽니다ㅋㅋㅋ

    거듭 감사 드려요. 연휴 마저 잘 보내세요~


서버에 요청 중입니다. 잠시만 기다려 주십시오...