2016-02-04 53 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