2011-10-30 3 views
1

사례 : 파일 업로드 페이지가 있습니다. 업로드가 완료되면 페이지를 다시로드하지 않으므로 iframe 내부에 양식을 넣습니다. iframe 내부의 양식은 자신에게 게시되고 완료되면 json을 반환합니다. 어떻게 대응할 수 있습니까? 업로드가 완료되면 iframe이 다시로드됩니다. 즉, iframe을 다시로드 할 때 어떻게 캡처합니까?부모 문서에서 iframe 내부의 새로 고침을 캡처하는 방법은 무엇입니까?

  • 우리는/인쇄 JSON 개체를 제외하고 아무것도 반환하지 수는 파일을 게시 할 수 없기 때문에
  • 우리가 아약스를 사용할 수 없습니다

    는 이러한 가정 (부모 문서의 함수를 호출 그래서 아무 JS 코드입니다.) ajax 사용

  • iframe 내부의 양식이 제출되면 페이지가 다시로드되고 추가 된 js 코드가 손실되기 때문에 iframe 내부에 javascript 코드를 추가 할 수 없습니다.

아이디어가 있으십니까?

UPDATE는 -이 솔루션은 매우 간단하다 (같은 곳에 온라인으로 발견) 같다 : iframe이 내부 페이지가 다시로드 될 때마다

<iframe onload="alert(window['upload_iframe'].document.body.innerHTML);" ...></iframe> 

이 방법이 경고를 발생합니다. 이제 JSON 객체를 HTML 코드와 차별화하는 것이 중요합니다. 이는 매우 간단합니다. 좋은 조언을 주신 모든 분들께 감사드립니다!

+1

JSON 개체를 제외한 모든 것을 반환 할 수없는 이유는 무엇입니까? 그것은 당신이 거기에 놓고있는 정말 어색한 제약처럼 보입니다. – glenatron

+0

@glenatron json이 java 서블릿에서 반환됩니다. 내가 이해할 수있는 것처럼 (나는 백 엔드 녀석이 아니다), 다른 서블릿에서 사용되는 하나의 일반 클래스가 있고, 그것을 "빌드"하여 json을 반환한다. 우리는 보통이 서블릿을 아약스를 통해 사용하지만,이 경우에는 그렇지 않다. .. 페이지가로드 될 때부터 json을 보낼 곳이 없으므로 json을 인쇄합니다 ... 일반적인 Java 클래스를 변경하지 않고 json을 캡처하는 방법이 필요합니다.나는 당신을 혼란스럽게하지 않았 으면 좋겠다. – Sherzod

답변

1

"onload"수신기를 iframe 요소에 추가하여 iframe 소스가 변경된 시점을 확인 했습니까? 그것은 해결책 일 수 있습니다. 작동하지 않는다면 iframe 결과에서 최상위 함수를 실행하는 것 외에는 선택의 여지가 없다고 생각합니다.

갱신 서블릿의 응답을 제어 할 수 없기 때문에, 아마도 그런 다음 서블릿과 통신하고 얻는 원시 JSON을 취하고 PHP의 중간을 만들 수는 무엇을 필요로하는지 반환

부모 창 javscript 함수를 실행하고 해당 함수에 json을 전달합니다.

이렇게하면 출력을 제어 할 수 있습니다.

+0

iframe 내부에 onload 수신기를 추가 할 수 있지만 일단 양식이 제출되면 iframe이 다시로드되고 해당 수신기를 잃어 버릴 것입니다 ... 완료된 양식 제출을 캡처하는 방법이 있다면 (그리고 x 시간이 걸릴 수도 있습니다 파일을 업로드하기 때문에) iframe 내부에서 json을 바로 얻을 수 있습니다. – Sherzod

0

마지막으로 확인한 시간 (또는 문서가 클 경우 해시 값)과 비교하여 iFrame 문서의 내부 텍스트에 대한 시간 초과 검사를 수행하여 iFrame의 콘텐츠가 변경되었는지 확인할 수 있습니다. 일단 JSON이 예상 된 응답인지 확인하기 위해 내용을 파싱 해 볼 수 있습니다.

AJAX를 사용하여 업로드가 서버 측에서 완료되었는지 확인할 수 있으며 서버에서 업로드가 완료되었다고 확인하면 iFrame 콘텐츠를 확인할 수 있습니다.

+0

네, 첫 번째 옵션을 생각하고있었습니다.하지만 더 좋은 해결책을 찾고 있습니다. 아마도 가장 좋은 방법은 아닌 것 같아요. 두 번째 개념은 훌륭하게 들립니다. 하지만 서버 측에서 많은 일들을 복잡하게 만들 것이고, 동시에 파일을 업로드 할 수있는 수백 명의 사용자가 있다고 생각하면 약간 복잡하게 들릴지 모르겠지만, 엔드 녀석. 감사! – Sherzod

+0

이상적인 솔루션은 아니지만 이상적인 상황은 아닙니다. 아래에서 위로 디자인 할 경우 업로드 스크립트의 출력을 제어 할 수 있지만 어디에서 작동하는지 . 여기서 무엇을 하든지간에 해킹이 될 가능성이 있습니다. – glenatron

관련 문제