Pjax+ 인라인 스크립트+ajax

4922 단어 jquery-pjax

묘사

안녕하세요!
현재 사이트에 pjax를 추가하려고 시도하고 있습니다
이 사이트에는 내연 스크립트와 내연 aax가 많이 있습니다.
bug#1: 모든 내연 스크립트, 예를 들어 의 일부javascript를 불러오기 전에 불러올 시간이 없습니다. 이것이 바로 모든 내연javascript가 작동하지 않는 이유입니다.그러나 이 페이지로 다시 돌아가면 스크립트가 불러오고 내연 스크립트가 작동합니다.$(문서)를 사용하고 있습니다.on('ready pjax:end',function()
오류 #2: 일부 페이지는 aax 조회를 사용하여 선택하거나 (예: 국가, 지역, 도시 선택) im 페이지에서 새로운 메시지를 검사합니다.첫 번째 불러오는 페이지에서 이 aax 조회는 작동하지 않습니다. (bug#1)이 페이지를 두 번째로 불러올 때, aax 조회는 (오류 #1) 작용하지만, 모든 다른 페이지에서 aax 조회는 작용합니다.그게 다가 아니야.다음에 이 페이지를 볼 때,ajax 조회는 복사됩니다.
다음 단계:
aax 조회, 컨트롤러를 사용하여 페이지를 처음 봅니다.로그:
- 게시http://mysite.com/ajax/get/200-90ms
이 페이지를 두 번째로 보려면 컨트롤러를 클릭하십시오.로그:
- 게시http://mysite.com/ajax/get/200-90ms
- 게시http://mysite.com/ajax/get/200-90ms
셋째, 이 페이지, 컨트롤러를 보십시오.로그:
- 게시http://mysite.com/ajax/get/200-90ms
- 게시http://mysite.com/ajax/get/200-90ms
- 게시http://mysite.com/ajax/get/200-90ms
기다린다
이ajax 조회는 pjax가 불러오는 모든 페이지에서 실행됩니다
죄송합니다. 제가 영어를 잘 못해서

토론 #1

, aax의 오류는 "document.ready"에서 "pjax:end"를 삭제함으로써 해결되었습니다.
단, 페이지 (새 메시지 검사) 에서 setTime Out을 통해ajax를 호출하면, 검색은 복사되고, 모든 다른 페이지

토론 #2

를 호출합니다. 버그#1에서 pjax를 사용하는 사이트가 스크립트를 불러올 때의 행동은 정적 사이트와 완전히 같지 않습니다.이 질문을 팔로우 해주세요.https://github.com/defunkt/jquery-pjax/issues/331#issuecomment- 54364324, 주제를 토론하고 업데이트하는 데 사용합니다.이 문제는 여전히 해결되지 않았다.
pjax 내비게이션 후 받은 이중 POST 요청은 에서 논의한 이중 이벤트 귀속처럼 들립니다https://github.com/defunkt/jquery-pjax/issues/473#issuecomment- 70617764. 이것은 당신의 사이트에 제출한 pjax 설정에 문제가 있음을 나타냅니다.pjax는 여러 번 반복하지 않고 사이트의 폼을 한 번만 설정해야 합니다.따라서 pjax를 어디서 설정하는지 확인하고 설치 코드가 불러오고 여러 번 실행될 수 없는지 확인하십시오.

토론 #3

@mislav 답변 감사합니다.
이것은 폼 제출이 아니라 간단한javascript입니다
pjax는 한 번을 포함합니다. (한 번?)바닥글 위(바닥글은 pjax에서 업데이트하지 않음):
<body>
    <div id="#wrapper">
        content
    </div>

    <script>
    $( document ).ready( function() {
        if ( $.support.pjax ) {
            $( document ).pjax( 'a', '#wrapper', { fragment: '#wrapper' } );
        }
     });
    </script>
</body>
새 메시지의 aax 조회를 한 페이지 (im) 에서만 검사합니다. setTime Out에서 시작합니다.
<body>
    <div id="#wrapper">
        content

        <script>
        function refresh() {
            setTimeout( function ()  {
                $.get(
                    "ajax/url",
                    function ( data ) {
                        refresh();
                    },
                    'JSON' 
                );
            }, 7001);
        }
        refresh();
        </script>
    </div>
</body>
나는 $.pjax.disable() 전에 이 페이지의 pjax를 비활성화해야 한다.
하지만 나도 이 페이지에서 pjax를 사용하고 싶지만, 나는 할 수 없다. 이 ajax 조회는 모든 다른 페이지에서 사용할 수 있다. (

토론 #4

네, 코드는 당신의 문제를 더 잘 이해하는 데 도움을 줍니다.나는 이미 너의 이전 평론에서 코드 예시의 형식을 수정했다.나중에 GitHub의 대화에 코드 블록을 붙여넣으려면 다음 구문을 사용합니다.
This is my regular text

```html
<p>This is a block of example HTML</p>
```

This is the rest of regular text
요컨대 붙여넣은 각 코드 블록 주위에 3개의 체크를 더한다.
너에 관한 문제.나는 내가 이곳에서 너를 얼마 도울 수 없을 것이라고 생각한다.문제는 로드한 페이지에서 내부 연결<script>이 Ajax 폴링 순환을 시작하지만 이 페이지를 떠나도 이 순환은 계속 폴링을 합니다.그리고 이 페이지로 내비게이션을 할 때, 다른 순환이 시작되었고, 이제 중복된 요청이 생겼습니다.(원본 테마의 POST 요청이 어디에서 왔는지 알 수 없습니다. 이 예시 코드는 순환에 들어갔음을 보여 줍니다.)
이것은 최초의 인라인 스크립트입니다.
function refresh() {
  setTimeout(function()  {
    $.get(
      "ajax/url",
      function(data) {
        refresh();
      },
      'JSON'
    );
  }, 7001);
}
refresh();
페이지 탐색 시 취소할 수 있도록 timerxhr 변수를 추가하는 것이 좋습니다.
var timer, xhr

function refresh() {
  timer = setTimeout(function() {
    xhr = $.get(
      "ajax/url",
      function(data) {
        refresh()
      },
      'JSON'
    )
  }, 7001)
}
refresh()

// Handle the next pjax navigation event (either click or popstate)
$(document).one("pjax:start", function() {
  // Cancel the setTimeout in progress
  clearTimeout(timer)
  // Cancel the Ajax request in progress
  if (xhr) xhr.abort()
})
그 외에는 웹 사이트의 JavaScript에서 발생하는 문제를 해결하는 데 도움이 되지 않습니다.너는 하나하나 파손을 처리해야 한다.Pjax 사이트는 일반 정적 사이트와 약간 다릅니다.

토론 #5

나도 같은 문제에 부딪혔는데 이 부분이 바로 문제다. $( document ).pjax( 'a', '#wrapper', { fragment: '#wrapper' } ); 이 전역 선택기를 'a' 로 설정하면, pjax는 aax 호출에 사용됩니다.따라서 더 좋은 방법은 일부 부류나 사용자 정의 속성 (예: [data pjax]) 을 추가해서 이 선택기의 범위를 제한하는 것이다.코드는 다음과 같이 보입니다. $( document ).pjax( 'a[data-pjax]', '#wrapper', { fragment: '#wrapper' } );

좋은 웹페이지 즐겨찾기