通过javascript通过多个php文件发布数据


POST data through javascript through multiple php files

我有 3 个 php 文件:request.phpaction.phpmail.php

request.php生成页面,根据 ajax 发送的POST数据填充不同的数据。它以表单形式开始,具有多个字段。当您单击submit按钮时,ajax 会通过 POST 将表单数据发送到action.php。 然后,action.php处理数据,将其存储在数据库中,并生成一个 html div,以干净地布置数据。 然后action.php使用html2canvasjsPDF将html div成pdf,然后通过jquery传递给mail.php POSTphpmailer一起通过电子邮件发送出去。 然后,action.php生成一条成功消息,该消息将发送给request.php并显示。

但是,action.php内将pdf发送到mail.php的javascript总是无法运行。我已经尝试了多种方法来做到这一点,但我似乎无法找到另一种将所有数据传递到需要的地方的方法,因为数据需要传递两次:首先作为原始数据数组,然后作为 html2canvasjsPDF 生成的 pdf。

如果我在action.php里面放置一个隐藏的mail.php iframe,它将运行良好并发送电子邮件,但它将是一个空的pdf,没有填充request.php中的任何数据(显然(。

我可以想到一些潜在的解决方案,但我无法弄清楚如何实现它们:

1(似乎问题是javascript不喜欢嵌套运行,但也许有一种方法可以强制action.php中的javascript代码运行,以便生成pdf并发送到mail.php

2(也许有一种方法可以只用一个我没有看到的数据传递来完成这一切。

3(也许在action.php内部有一种方法可以将数据数组传递给process.phpiframe,这将格式化htmldiv并生成pdf,然后将其发送给mail.php,但我认为即使我可以完成,我也会遇到同样的javascript问题,process.php无法运行并将pdf发送到mail.php

你对 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

也许不是我想要的答案,但由于我知道我不想像 Matthew 建议的那样使用 php pdf 创建,这最终对我有用。

由于request.php无论如何都有适用于action.php的 javascript,我最终将 html 表从 action.php 发送回 request.php ,然后request.php调用mail.php