2014-04-10 86 views
0

以下是我在訂單確認模塊中使用的代碼。我使用fpdf創建PDF文件,併發送電子郵件。隨後,我清除購物車並重新顯示菜單。php執行javascript函數

在下面的代碼中,我已經註釋掉了pdf文件的創建。當我做到這一點,發送電子郵件和購物車清空由JavaScript代碼

  <script type="text/javascript"> 
       doCart(\'EmptyCart\',\'0\', \'0\', \' \', \'partCheckOut\'); 
      </script> 

,但如果我取消了代號爲創建的PDF:

  $pdf->getHdrDtl(); 
      $pdf->Header(); 
      $pdf->Footer(); 
      $pdf->generatePDF(); 

PDF文件被創建,電子郵件被髮送,但購物車沒有清空,菜單也不會重新顯示。

有沒有人有任何建議或想法?

if (isset($_POST['confirm'])) 
{ 
     $Cart->ConfirmOrder(); 
      /* 
      $pdf->getHdrDtl(); 
      $pdf->Header(); 
      $pdf->Footer(); 
      $pdf->generatePDF(); 
      * 
      */ 
     $Cart->sendOrderEmails($dealer_email); 
      echo ' 
      <script type="text/javascript"> 
       doCart(\'EmptyCart\',\'0\', \'0\', \' \', \'partCheckOut\'); 
      </script> 
      '; 
     $group = $_SESSION['group']; 

     if ($group == 1){ 
       header("Refresh: 1; ./admin_menu.php"); 
        exit; 
     } 
     if ($group == 2){ 
       header("Refresh: 1; ./user_menu.php"); 
        exit; 
     } 
     if ($group == 3){ 
       header("Refresh: 1; ./admin_menu.php"); 
        exit; 
     } 
} 
+0

您是否使用某種類型的javascript調試工具來查看是否引發了javascript錯誤? –

+0

我不認爲你瞭解網絡的工作原理。 PHP不能執行JavaScript--它只是打印它,而某個人(可能是瀏覽器)會在稍後階段執行它。而且您不能在HTML中間發送HTTP標頭。 –

+0

PHP是服務器端語言,JavaScript是客戶端語言,意味着服務器會向您發送JavaScript頁面進行交互的HTML頁面。 – Slade

回答

0

我不知道您的$ pdf-> generatePDF()是如何工作的,但它看起來像是在當前頁面中生成PDF。該頁面不再是一個HTML頁面,而是一個PDF頁面。因此,您不能直接在頁面中編寫任何JavaScript代碼(或直接編寫任何html或文本,您必須使用FPDF函數將數據插入到PDF中,並在生成文檔之前)。

而你發送數據到瀏覽器後肯定無法發送任何PHP頭。 如果您在發送數據後必須重定向,請使用javascript重定向。

+0

不錯的想法,但我在系統上創建一個pdf文件,並通過瀏覽器下載文件。瀏覽器保持在我原來的屏幕上。這些是'$ pdf-> generatePDF'的代碼的最後一行:''$ pdf-> Output('Order.pdf','F'); $ pdf->輸出('Order.pdf','D'); ' – Geoff