Pjax가 창을 파괴하는 F5

4078 단어 jquery-pjax

묘사

안녕하세요,
소프트웨어 고마워요.나는 아주 큰 열정으로 그것을 사용하고 있다.
나는 특정한 장면에서 몇 가지 문제에 부딪혔다.
- 여러 단계를 포함하는 양식 마법사
- 한 걸음 한 걸음 기둥
- 2단계에 PJAX 위젯 1개 포함
문제는 2단계에 있습니다.F5를 사용할 때 브라우저의 모든 것이 정상입니다.이 직위는 다시 제출될 것이다.그러나 PJAX 작은 위젯에 대한 내연 리셋을 진행할 때 F5가 보이지 않았습니다. POST에 다시 제출하지 않았고 GET 요청으로 모든 데이터를 잃어버렸습니다.
나는 몇 가지 연구를 해서 원인을 찾았다.행 및 창을 설명합니다.역사.replaceState(pjax.state, document.title)에서 문제가 해결되었습니다.
- https://github.com/defunkt/jquery-pjax/blob/master/jquery.pjax.js#L351
나는 내 옵션을false의 옵션으로 밀어넣고 바꾸라고 했다.이거 일부러 그런 거예요?
thanx

토론 #1

기사 감사합니다.불행하게도 이것은 모두가 알고 있는 aax를 사용하는 문제입니다. 우리는 이것에 대해 아무런 힘이 없습니다.https://github.com/defunkt/jquery-pjax/issues/356#issuecomment-64979110
내가 논평에서 건의한 바와 같이, 해결 방법은 폼을 발표한 후에 서버는 항상 GET 자원으로 방향을 바꾸는데, 그 중에서 POST 데이터는 다단계 마법사가 완성될 때까지 백엔드에 저장된다.이렇게 하면 pjax가 없는 사용자와 pjax를 사용하는 사용자는 똑같은 완전한 체험을 할 수 있다. 그들은 시종일관 페이지를 새로 고칠 수 있고, 아무것도 잃어버리지 않을 것이다.
또 다른 질문: 358

토론 #2

헤이, 미스라프,
빠른 답변 감사합니다.
나는 이미 너의 답안을 고려한 적이 있고, 또 몇 가지 일을 나는 아직 이해하지 못한다.
- 왜 pjax 작은 위젯이 Replace State로 내 폼을 파괴하는지 (현재 페이지 상태와는 전혀 무관합니다)
- 351줄에서 사용하지 않았기 때문에 리플렉스State를 사용하거나 사용하지 않는 옵션이 있는 이유
- 왜 이 일은 해결할 수 없다고 생각하죠(351번째 줄의 주석을 취소하는 것이 해결 방안의 첫걸음?)
다시 한 번 감사합니다!

토론 #셋

전체 게시물의 다단계 마법사에서 replaceStatepushState와 같은 역사적 조작을 실행하면 F5가 마지막 게시물을 다시 제출할 수 있는 능력을 잃을 수 있습니다.
2단계의 pjax 작은 위젯은 어떤 종류입니까?pjax를 사용하지 않은 상태에서 일반 ajax를 사용하여 작은 위젯의 일부 내용을 불러올 수 있습니까?그것은 너의 문제를 해결할 것이다.
불행하게도, 당신의 문제를 복구하기 위해 제안한 줄을 주석해 버리면 우리의 테스트 세트를 파괴할 수 있기 때문에, 라이브러리를 파괴할 수 있습니다.

토론 #4

안녕하세요, 미스라프,
나는 Yi2 위젯에서 PJAX를 사용하는데, 이 위젯들은 PJAX가 불러오는 것에 강하게 의존한다.나는 PJAX를 역사 조작이 아니라 내연 AJAX 교체에 사용할 것이다.
문제는 이 두 개의 작은 위젯에 있는 모든 Replace States와push State를 사용하지 않는다는 것입니다.나는 왜 이런 역사가 있는지 아직 모르겠다.replaceState가 계속 호출됨https://github.com/defunkt/jquery-pjax/blob/master/jquery.pjax.js#L351.나는 옵션의 검사를 보지 못했습니까?

토론 #5

나는 Yii2 작은 부품에 익숙하지 않다.질문은: pjax가 아닌 aax로 수동으로 내연 내용을 불러올 수 없습니까?여기는 역사 작업이 진행되지 않았기 때문에 마법사의 두 번째 단계에서pjax가 필요하지 않을 수도 있습니다.Pjax는 실제로 역사 조작을 위한 라이브러리입니다.
비록 pjax의 replaceState 옵션과 replace: 옵션을 사용하지 않았지만, 이 때 나타나는 push: 은 저희 라이브러리의 결함일 수 있습니다. 그러나 다시 한 번 강조합니다. pjax는 사용자가 어떠한 역사적 조작을 원하지 않는 장면에 대해 최적화나 테스트를 하지 않습니다.이런 상황에서 pjax는 쓸모가 없기 때문에 수동ajax를 사용하는 것이 가장 좋다.

토론 #6

알겠습니다. 저는 당신의 예쁜 PJAX와 예쁜 내연 교체 기능을 바탕으로 모든 작은 위젯을 구축하고 있습니다.대부분의 작은 위젯에 대해 나는 역사적 조작을 필요로 하지 않는다.나는 내가 이곳에서 AJAX를 사용할 수 있다고 생각하지만, 나는 이 모든 것을 처리하는 방법/라이브러리를 더욱 좋아한다.
나는 이제 PJAX의 목표를 더 잘 안다.나는 내가 그것을 사용한 이유가 틀렸다고 생각한다.시간 내주셔서 감사합니다!

토론 #7

@dynasource PJAX 리셋 허용에 대한 첫 번째 논평here's the current line number(테스트 등)
여러분의 질문과 회답에 감사드립니다. 이것은 매우 도움이 됩니다!

토론 #8

헤이@Mislav, 인터넷에서 AJAX 기반의 대체 방안을 찾으려고 했지만, 내부 링크와 폼 포획 같은 PJAX가 제공하는 기능이 없는 것 같습니다.
이어서 나는 점점 더 많은 사람들이 PJAX를 사용하여 역사와 무관한 AJAX 세션을 다시 불러오는 것을 보았다. (예:modals)확장된 PJAX를 보다 광범위한 시각에서 사용할 수 있도록 어떻게 생각하십니까?사용자가 교체 상태를 설정한 경우 이 특정 주제의 확장은 교체 상태를 비활성화합니다.
감사합니다

토론 #9

@dynasource. 현재 더 많은 용례를 덮어쓸 수 있는 확장 라이브러리가 없습니다.Pjax는 GitHub에서 사용하는 경우: 내비게이션 링크에 사용됩니다.나는 pjax를 더욱 설정 가능한 방식으로 다시 쓰기를 시도할 것이지만, 일반적인 예는 여전히 한 개발자가 구축과 디버깅을 책임질 것이다.
최초의 문제에 대해 저는 어떤 JS 방법도 다단계 POST 마법사가 페이지를 새로 고치고 데이터를 다시 보낼 수 있는 문제를 해결할 수 없다고 생각합니다.이것은 단지 본 컴퓨터의 브라우저 기능에 대한 제한일 뿐이다.그래서 당신의 경우, 이 마법사 절차를 처리하기 위해 JS를 사용하지 않는 것을 권장합니다.
pjax에서 pjax가 해결하고자 하는 용례와 일치하는 특정한 기능을 보려면, 개별적인 문제를 열어 주십시오. 저는 그것들을 고려할 것입니다.감사합니다!대답 고마워요.응, 나는 우리가 여기서 이야기한 것이 같은 문제가 아니라고 생각한다.
현재 페이지의 어딘가에 있는 PJAX 위젯을 사용할 때 일반 다단계 마법사의 기능이 파괴되었다.인터랙티브 웹 디자인에 있어서 이것은 결코 드물지 않고 심지어는 불가능한 것 같다.

토론 #10

네, 불행합니다.나는 그것을 해결하고 싶지만, 어떻게 해결해야 할지 모르겠다.만약 당신이 어떻게 POST를 사용하여 리셋을 하는지에 대해 구체적인 생각을 가지고 있다면, 나는 기꺼이 들을 것이다.

좋은 웹페이지 즐겨찾기