2012-08-13 176 views
3

我使用php和apache服務器。我的應用程序從用戶收集數據,將其放入數據庫中,然後使用PDFLib將格式化的數據以pdf格式顯示回用戶。我的問題是,我希望將pdf作爲新頁面顯示,這是有效的。但是,我也有一個空白頁面,其中包含用於顯示PDF的變量的URL。我希望這個頁面以HTML格式顯示不同的摘要頁面,而不需要URL中的變量,但我不知道該怎麼做。在下面的代碼中,如果醫療標誌爲假,我將進入摘要頁面。如果醫療標誌是真的,我想要兩個頁面。這可能嗎?PHP重定向到pdf然後導航到另一個頁面?

if($medical_flag) { 
     header("Location: {$_SERVER['PHP_SELF']}/./index.php?step=wc_pdf&id={$event_id}");  
    } else { 
     header("Location: {$_SERVER['PHP_SELF']}?step=success&id={$event_id}"); 
    } 
    exit; 

好的,我明白這是不可能的,但我還沒有想出如何解決這個問題。我以爲我可以用這樣的折騰了PDF的開口後在jQuery的:

jQuery(document).ready(function() 
{ 
function display_pdf_page(data, textStatus) { 
    var current_record = data || {}; 
     //somehow display the pdf now   
} 

function show_pdf(eventid){ 
    jQuery.getJSON(
     './inc/get_current_record_data_json.php', 
     {'id': eventid}, 
     display_pdf_page   
    );  
} 
    ... 
    }); 

然後我處理PHP中的數據後,使用「呼」上面:

echo '<script type="text/javascript">' 
     , 'show_pdf($event_id);' 
     , '</script>'; 

但是,沒有按也不工作,PHP不知道在哪裏可以找到show_pdf。我對客戶端/服務器端事件的理解不夠讓我在這裏遇到困難。呼叫是鈍的...我不明白。

+2

這是不可能的。您無法同時將瀏覽器同時發送到文件和網頁。一個HTTP請求,一個HTTP響應。如果由於某種原因,您需要從地址欄中隱藏PDF的URL,然後重定向到框架集頁面,其中一個框架指向PDF生成器的URL。 – 2012-08-13 16:24:36

+1

我可能會使用javascript在新窗口中打開PDF,這是一個彈出窗口。然後,我會按照您所描述的將主站點重定向到新頁面。或者你可以做的是'php頭(位置:)'到一個新的頁面,然後將javascript作爲pdf的新窗口。 – 2012-08-13 16:32:15

+0

當您在新頁面中顯示PDF時,您所看到的只是瀏覽器的一項「功能」。這不是你提出一個請求並收到兩個回覆。 – Crontab 2012-08-13 16:32:47

回答

2

此解決方案不會按設計工作。

首先,如果你想隱藏數據,你應該切換到POST而不是GET。這樣,數據包含在HTTP有效負載中,而不是URI中。其次,您應該爲JavaScript包含一個隱藏的iframe以訪問生成PDF的頁面。在成功執行AJAX調用(或任何您使用的方法)後,您可以將頁面重定向到所需的目標。

1

正如sixeightzero所建議的,在這種情況下,應該使用POST來代替GET。

但是,也許你可以通過跨越窗口(100%寬度和高度)的大iframe完成所需的效果?

相關問題