2012-08-19 3 views
2

나는 window.open을 사용하여 fpdf를 사용하여 즉석에서 pdf를 만들고 사용자에게 즉시 표시하는 php 파일을 가리 켰습니다. 모든 브라우저와 모바일 장치에서 잘 작동하는 것 같습니다. 예 :window.open 매개 변수를 PHP로 보내고 트리거 PDF 생성 및보기

window.open('/client/feature_Schedule/scheduleReport.php','Schedule_Report','width=900,height=600,status=yes'); 

PHP 파일에 필요한 모든 매개 변수가 이미 있으므로이 예제에서는 값을 전달하지 않습니다.

하지만 지금은 PDF 파일을 만들고 사용자에게 표시하기 전에 php 파일의 데이터베이스를 쿼리하기 위해 자바 스크립트에서 값을 전달하고 싶습니다. 내가 알아야 할 대회가 있습니까? Window.open은 "?"뒤에 값을 추가하는 것 외에는 이것을 처리하지 않는 것 같습니다. url의 끝에. 하지만 PHP 파일에 많은 양의 데이터를 보낼 수 있기 때문에 POST 값을 선호합니다. 나는 심지어 $ .ajax로 놀아 왔지만 사용자를 위해 pdf로 시작하는 방법을 모르겠습니다.

감사합니다.

+0

: 자바 스크립트에게 유일한 솔루션을 추가? 많은 매개 변수? 긴 매개 변수? – dana

+0

전송되는 매개 변수 문자열의 길이가 매우 길 수 있습니다. 7000+ 문자가 URL에 대한 최대 값 (확실하지 않음) 인 경우 URL 길이가 훨씬 길어질 수 있습니다. 그래서 대신 POST를 사용하고 싶습니다. 그게 올바른 논리처럼 들리니? – ryan77

+0

또한 다른 사람들과 마찬가지로 아래에 답변을 적용 할 예정입니다. 그레이트 포럼! 빠른 답변에 감사드립니다. 나에게 오래 걸리면 무슨 일이 일어나는지 모르겠다. 성공할 경우/몇 가지 피드백을 줄 것입니다. 감사. – ryan77

답변

1

가 window.open()로 POST 데이터를 전송하는 솔루션이며, 그것은 매우 간단는 : Window.open and pass parameters by post method

심지어 순수한 자바 스크립트 프로그래밍과 관련된 실제 HTML 코드없이 할 수있다. // 편집

는 : "많은 데이터"는 무엇을 의미 하는가 호기심에서

<input type="button" value="Open" onclick="openWindow();" /> 
<script> 
function openWindow(){ 
    // create <form> 
    var form = document.createElement('form'); 
    form.method = 'POST'; 
    form.action = 'process.php'; 
    form.target = 'window_1'; // target the window 
    // append it to body 
    var body = document.getElementsByTagName('body')[0]; 
    body.appendChild(form); 
    // create an element 
    var child1 = document.createElement('input'); 
    child1.type = 'text'; // or 'hidden' it is the same 
    child1.name = 'elem1'; 
    child1.value = 'some value'; 
    // append it to form 
    form.appendChild(child1); 
    // create another element 
    var child2 = document.createElement('input'); 
    child2.type = 'text'; // or 'hidden' it is the same 
    child2.name = 'elem2'; 
    child2.value = 'some other value'; 
    // append it to form 
    form.appendChild(child2); 

    // create window 
    window.open('', 'window_1'); 

    // submit form 
    form.submit(); 
    body.removeChild(form); // clean up 
} 
</script> 
+0

HTML이 없으면 어떻게됩니까? –

+0

좋은 질문 @ IgnacioVazquez-Abrams. 나는 이반이 게시 한 링크의 논리를 따라갈 수 있었고 문제가 해결되었습니다. 내가 바라는대로 접근 방식을 깨끗하게하지는 않지만 작동합니다. 감사. – ryan77

+0

@Ignacio Vazquez-Abrams and ryan77 자바 스크립트 만 추가했습니다. 도움이 되길 바랍니다. –

2

숨겨진 입력 내용이있는 <form>을 만들고 JavaScript를 사용하여 양식을 제출할 수 있습니다. 양식이 새 창에 게시되도록하는 target="_blank" 특성을 확인하십시오.

<a href="#" onclick="document.forms['pdfForm'].submit();return false;">Generate PDF</a> 

<form target="_blank" id="pdfForm" name="pdfForm" method="POST"> 
    <input type="hidden" name="param1" value="val1" /> 
    <input type="hidden" name="param2" value="val2" /> 
</form> 
2

window.open()은 GET 요청 만 수행 할 수 있습니다. 대신 POST를 사용하여 동일한 효과를 얻으려면 적절한 컨트롤과 대상이 포함 된 create a form이 필요합니다.

관련 문제