我有 3 个 php 文件:request.php
、action.php
、mail.php
。
request.php
生成页面,根据ajax 发送的POST
数据填充不同的数据。它以具有多个字段的表单开始。当您点击submit
按钮时,ajax通过POST
将表单数据发送到action.php
。然后,action.php
处理数据,将其存储在数据库中,并生成一个清晰地布局数据的 html div
。 action.php
然后使用 html2canvas
和 jsPDF
将 html div
转换为 pdf,然后将其传递给mail.php
通过 jquery POST
通过 phpmailer
通过电子邮件发送。然后 action.php
生成一条成功消息,该消息被发送到 request.php
并显示。
但是,action.php
中将 pdf 发送到 mail.php
的 JavaScript 始终无法运行。我尝试了多种方法来做到这一点,但我似乎无法找出另一种方法来将所有数据传递到需要的地方,因为数据需要传递两次:首先作为原始数据数组,然后作为由 html2canvas
和 jsPDF
生成的 pdf。
如果我将 mail.php
的隐藏 iframe
放入 action.php
中,它将正常运行并发送电子邮件,但它会是一个空的 pdf,未填充 request.php 中的任何数据(显然)。
我可以想到一些潜在的解决方案,但我不知道如何实现它们:
1)问题似乎是javascript不喜欢嵌套运行,但也许有一种方法可以强制action.php
中的javascript代码运行,以便生成pdf并发送到mail.php
。
2)也许有一种方法可以只用一个我没有看到的数据传递来完成这一切。
3)也许在 action.php
内部有一种方法可以将数据数组传递给 process.php
的 iframe
,这将格式化 html div 并生成 pdf,然后将其发送到 mail.php
,但我假设即使我能完成此操作,我也会在 process 中遇到与 javascript 相同的问题.php
无法运行并将 pdf 发送到 mail.php
。
最佳答案
对于 JavaScript 和 PHP 如何协同工作,您有一个相当正常的(一开始)误解。 PHP 在您的服务器上运行。 JavaScript 在用户的浏览器上运行。根据您上面的内容,您想要做的是:
- 通过
request.php
加载初始页面 - 使用
action.php
处理数据请求并向JS发送格式化表格 - 让 JS 将该表发送到
mail.php
你应该做什么:
- 通过
request.php
加载初始页面 - 使用
action.php
处理数据请求- 让
action.php
调用mail.php
,给它表格 - 让
action.php
将表格发送回JS
- 让
- 让
mail.php
通过电子邮件发送到表格
您问为什么 JavaScript 永远不会运行来将数据发送到第三个脚本,那是因为您可能永远不会调用它。但更重要的是,正如我上面所示,您不需要它:只需让 action.php
调用 mail.php
。
关于javascript - 通过多个 php 文件通过 javascript POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35213958/