2009-06-04 3 views
9

나는 Javascript 기반 업로드 진행률 미터를 쓰고있다. iframe에 파일을 제출하는 대신 표준 다중 파트 제출 메서드를 사용하고 싶습니다. 전송하는 동안 업로드 완료율을 반환하는 ajax 요청을 보낸 다음 적절하게 진행률을 업데이트합니다.Safari는 양식 제출 후 AJAX 요청을 허용하지 않습니까?

이 모든 기능은 FireFox & IE에서 원활하게 작동합니다. 그러나 Safari는 기본 폼이 제출 된 후 아약스 요청이 완료되지 않도록합니다. 디버거에서 요청 헤더를 볼 수는 있지만 응답이 수신되지 않는 것처럼 보입니다.

누구든지이 사실을 알고 있나요?

+2

일부 코드를 게시하십시오. 문제 해결 방법이 있습니다. – ichiban

답변

0

이것은 실제로 나에게 올바른 행동처럼 들리지만 - 파이어 폭스와 IE는 그렇지 않으면 놀랐습니다.

페이지를 떠나려고 시도하는 것과 비슷하지만 여전히 페이지가 상호 작용하는 것은 장난입니다!

이것이 왜 유익한 지 알 수 있습니다. 그러나 현재 액세스하고있는 URI 나 최악의 경우 동일한 도메인에 POST를 수행하는 경우에만 유용하게 사용할 수 있습니다.

2

양식을 제출하기 위해 iframe을 사용하고 있습니까? 양식을 제출하고 나면 DOM에 대한 수정을 더 이상 수행 할 수없는 상태가됩니다.

자세한 내용은 this one과 같은 자습서를 확인하십시오.

3

예, Safari와 WebKit (예 : Chrome) 기반의 브라우저가 작동하는 방식입니다. 나는 최근에 파일 업로드 진행률 미터에서도 이와 관련했다. 나는 http://drogomir.com/blog/2008/6/30/upload-progress-script-with-safari-support에서 볼 수있는 것과 같은 기술을 사용하여 ajax가 작동하도록했습니다. 필자의 경우 Drogomir이 사용하는 응용 프로그램의 모양을 변경하고 싶지는 않았지만 기술 자체가 작동했습니다. 본질적으로 해결책은 Safari에서만 jQuery와 AJAX 스크립트를로드하는 숨겨진 iframe을 만드는 것입니다. 그런 다음, 최상위 프레임은 양식 제출시 해당 프레임의 함수를 호출합니다. 다른 모든 브라우저는 이전과 동일하게 작동합니다.

관련 문제