2012-06-18 2 views
0

한 번에 두 개의 양식을 제출하려고합니다 (하나는 db로 이동하고 다른 하나는 fpdf로 이동하여 레이블을 만듭니다). jquery를 사용하여 첫 번째 형식의 변수를 두 번째 형식의 숨겨진 입력에 복사합니다. 나는이 질문을 몇 번 여기에서 보았지만 아무도 대답하지 못했다. 'fake'ajax 메서드를 사용합니다. 즉, 같은 페이지에서 숨겨진 iframe에 양식 타겟을 설정합니다. 그래서 난 후, 하나의 양식을 제출 한 다음 두 번째 양식을 제출 지연을 사용하려면두 가지 양식 하나 제출 - 제출, 지연, 제출

가 어떻게이 코드에 지연을 추가합니까 (는 지체없이 작동하지 않습니다 때문에!) :

$('#insert').submit(function() { 
    //Delay here please, or is it timeout I need? 
    $('#print').submit(); 
    }); 

<form id="insert" action="insert.php" target="hiddeniframe"> 
// a bunch of inputs 
<input type="submit" value="submit"> 
</form> 

<form id="print" action="pdf.php" target="hiddeniframe"> 
// a bunch of inputs 
</form> 
+0

왜 아약스를 사용하지 않으시겠습니까? –

+0

@ChristianVarga 전에 아약스를 사용한 적이 없으므로 간단하게 유지하려고했습니다. 또한 아약스를 사용한다고하더라도 나는 여전히 같은 문제가 있다고 생각합니다. – cantaffordretail

+0

pdf.php 스크립트는 정확히 무엇을합니까? 뭔가를 반환하거나 서버에서 파일을 만드나요? 한 번에 2 개의 아약스 요청을 제출할 수없는 이유는 없습니다 (단, 서버에서 한 번의 작업으로 데이터를 한 번만 보내고 거기에 삽입 및 PDF 작업을 분할해야 함). –

답변

1

그것은이다 스크립트가 수행하는 작업에 대해 명확하지 않지만 첫 번째 요청에 항상 ajax를 사용할 수 있으며 두 번째 요청에 iframe을 사용할 수 있습니다. 예 :

$('#insert').on('submit', function(e) { 
    e.preventDefault(); 

    $.ajax({ 
    url: $(this).attr('action'), 
    type: 'POST', 
    data: $(this).serialize(), 
    success: function() { 
     // duplicate fields from first form into second form 
     // as per whatever code you've already written 

     // submit second form 
     $('#print').submit(); 
    }) 
    }); 
}); 

이렇게하면 두 번째 양식이 첫 번째 양식의 성공적인 응답 후에 제출됩니다.

+0

이 솔루션을 좋아하지만 두 번째 양식을 제출할 수 없습니다. 필자는 필드를 복제 할 필요가 없습니다. 왜냐하면 키 업에서 이미 완료 되었기 때문입니다. – cantaffordretail

+0

성공 함수에서'alert' /'console.log'를 잡아서 발사하고 있는지 확인하십시오. 또한 오류가없고 Firebug/개발자 도구를 확인하여 이벤트가 실제로 전송되는지 확인하십시오. –

+0

아, 내 지식 부족. 두 번째 양식에 대한 제출 단추가 있었는데 양식에 제출 단추가있는 경우 submit()이 작동하지 않는 것처럼 보입니다. 모두 훌륭합니다.이 솔루션은 정말 멋집니다! 감사 – cantaffordretail