2011-02-17 7 views
0

서버가 양식 처리를 완료 할 때 javascript가 콜백을 등록하려면 어떻게해야합니까? 내가 해봤양식 처리 후 Javascript 이벤트

<form 
    id="savePlaylistForm" 
    name="savePlaylistForm" 
    target="savePlaylistIFrame" 
    method="post" 
    action="<?=base_url()?>index.php/savePlaylist"> 
    <input 
     type="hidden" 
     id="savePlaylistEntire" 
     name="savePlaylistEntire" /> 
</form> 
<iframe 
    id="savePlaylistIFrame" 
    name="savePlaylistIFrame" 
    style="display: none"> 
</iframe> 

무 소용이 다음과 같은 : onSubmit이 때 클라이언트 발생하기 때문에 폼에 onSubmit 부착

onSubmit

오른쪽 이벤트되지 않습니다 내 특정 설정입니다 제출하려고합니다. 서버가 아직 연락되지 않았습니다.

의 onLoad

는 I 대상은 iframe의 onLoad에 부착. 제 경우에는 해고 당하지 않습니다. 내 서버 스크립트는 헤더를 설정하여 m3u 재생 목록 파일을 에뮬레이트합니다. IFrame은 일반 HTML 페이지가로드 될 때 onLoad 만 실행하며 파일 저장 대화 상자가 표시되지 않습니다. iFrame에 일반 HTML 페이지를로드하더라도 onLoad는 사용자가 양식을 처음 제출할 때만 실행됩니다. 후속 제출은 onLoad를 시작하지 않습니다.

+0

코드가 어떻게 보이는지는 모르겠지만 XMLHttpRequest 객체 ('xhr')를 사용하여 데이터를 제출하는 경우 이벤트를 onreadystatechange 이벤트에 바인딩 할 수 있어야합니다 . 거기에서'xhr.getResponseHeader ('Content-Type')'또는 무엇이든을 사용하여 리턴 된 헤더를 조사 할 수 있어야합니다. 'onreadystatechange' 이벤트가 발생하고'readyState == 4' 이벤트가 발생하더라도 심문 할 필요조차 없습니다. – ggutenberg

답변

1

양식을 제출하면 새 응답으로 페이지가 다시로드됩니다. 따라서 원본 문서는 더 이상 존재하지 않으므로 콜백을 어떻게 실행할 수 있습니까?

기본 제출 작업을 취소하고 (false를 반환하여) Ajax 호출을 통해 기본 브라우저 제출을 복제하는 onSubmit 처리기를 첨부 할 수 있습니다. 그런 다음 응답 콜백을 첨부 할 위치가 있습니다 (onReadyStateChange를 수신하거나 jQuery와 같은 상위 레벨을 사용하여).

+0

양식을 제출해도 전체 페이지가 새로 고쳐지지 않습니다. 이것은 내부 양식 제출입니다. 나는'$ ('savePlaylistForm'). submit()'을 호출하고 서버 응답은 iFrame을 대상으로합니다. 이것은 Ajax로 복제 할 수 없습니다. Ajax는 파일을 에뮬레이트하는 PHP 출력을 위해 파일 저장 대화 상자를 팝업 할 수 없다. – JoJo