Pjax+ 인라인 스크립트+ajax
4922 단어 jquery-pjax
묘사
안녕하세요!현재 사이트에 pjax를 추가하려고 시도하고 있습니다
이 사이트에는 내연 스크립트와 내연 aax가 많이 있습니다.
bug#1: 모든 내연 스크립트, 예를 들어
오류 #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();
페이지 탐색 시 취소할 수 있도록 timer
및 xhr
변수를 추가하는 것이 좋습니다.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' } );
Reference
이 문제에 관하여(Pjax+ 인라인 스크립트+ajax), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/defunkt/jquery-pjax/issues/510텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)