2016-02-04 52 views
0

我有3個php文件:request.phpaction.php,mail.php通過javascript通過多個php文件POST數據

request.php生成頁面,根據由ajax發送的POST數據填充不同的數據。它以一個表單開始,具有多個字段。當您單擊submit按鈕時,ajax通過POST將表單數據發送到action.phpaction.php然後處理數據,將其存儲在數據庫中,並生成清晰地佈局數據的html divaction.php然後使用html2canvasjsPDF將html div轉換爲pdf,然後通過jquery POST傳遞給mail.php,通過電子郵件將其發送至phpmaileraction.php然後生成發送到request.php並顯示的成功消息。

但是,發送pdf到mail.phpaction.php中的JavaScript始終無法運行。我嘗試了很多種方法來做到這一點,但我似乎無法找到將數據傳遞到需要的地方的另一種方式,因爲數據需要傳遞兩次:首先是作爲原始數據的數組,然後作爲由html2canvasjsPDF生成的pdf。

如果我的地方mail.php隱藏iframeaction.php它將會運行得很好,併發送電子郵件,但它不含有任何數據從request.php(顯然)的空PDF。

我能想到的一些潛在的解決方案,但我想不出如何實現它們:

1)看來問題是,JavaScript不喜歡跑嵌套,但也許有辦法強制action.php中的javascript代碼運行,以便生成pdf併發送到mail.php

2)也許有辦法做到這一切只有一個數據通過,我沒有看到。

3)也許有一種方法,而內部action.php傳遞數據數組的iframeprocess.php這將格式化的HTML DIV並生成PDF,然後把它送上mail.php,但我相信,即使我能得到這樣做我會遇到同樣的問題,在process.php的JavaScript未能運行併發送到mail.php的PDF。

+0

發佈您的代碼,我們可能會提供幫助。 – Matt

+0

您可以隨時使用會話 – Phiter

+0

@Matt添加的代碼。 – tsHunter

回答

1

對於JavaScript和PHP如何協同工作,您有一個相當正常的(對於開始)的誤解。 PHP在你的服務器上運行。 JavaScript在用戶的瀏覽器上運行。基於你有什麼上面,你正在嘗試做的是:

  1. 通過request.php
  2. 過程與action.php併發送一個格式化的表格到JS數據請求
  3. 有JS加載初始頁發送表mail.php

你應該不是做什麼:

  1. 經由request.php
  2. 過程數據請求裝載初始頁與action.php
    • 具有action.php呼叫mail.php,給它表
    • 具有action.php發送表回JS
  3. 具有mail.php發送表格

你問爲什麼JavaScript永遠不會運行將數據發送到第三個腳本,那是因爲你可能永遠不會調用它。更重要的是,正如我上面展示的那樣,你不需要它:只需action.php致電mail.php

+0

添加代碼。我覺得我確實有'action.php'調用'mail.php'。也許我誤解你的意思。用示例代碼也許我的問題會更清楚。 – tsHunter

+0

你沒有'action.php'調用'mail.php'。你正在通過'response.php'(我假設你的'index.php'頁面)將你從服務器('action.php')獲得的數據發送回你的服務器('mail.php') )。 [這個問題](http://stackoverflow.com/questions/8450696/execute-a-php-script-from-another-php-script)有關於如何從其他PHP腳本調用PHP腳本的優秀答案。這樣想:在你現在的模型中,我要求表格,你把它交給我,然後你讓我把它還給你,這樣你就可以發郵件給你。剪掉中間人。 –

+0

我覺得我很瞭解你說的一些話。但我相信我仍然需要在某個時候調用JS來生成pdf。現在我的當前模型是:服務器給你一個表單,你填寫它並將其發送回服務器。服務器向您顯示該表單的結果,然後服務器需要使用JS來基本拍攝表單的圖片。然後,該圖片被髮送到服務器,以便它可以通過電子郵件發送出去。即使我有'action.php'調用'mail.php',我仍然需要在生成PDF之前的某個時候運行JS,所以'action.php'有一些東西可以傳遞給'mail.php'。 – tsHunter

0

也許不是我正在尋找的答案,但因爲我知道我不想使用php pdf的創建,因爲馬修建議,這最終爲我工作。

由於request.php曾與action.php反正工作的JavaScript,我結束了從action.php發送HTML表格回request.php,然後有request.php呼叫mail.php