我有3个php文件:request.php
,action.php
,mail.php
。
request.php
生成页面,根据ajax发送的POST
数据填充不同的数据。它以一个表单开头,具有多个字段。点击submit
按钮后,ajax会通过action.php
将表单数据发送到POST
。然后action.php
处理数据,将其存储在数据库中,并生成一个干净地布置数据的html div
。 action.php
然后使用html2canvas
和jsPDF
将html div
转换为pdf,然后通过jquery mail.php
传递给POST
通过phpmailer
发送电子邮件。然后action.php
生成一条成功消息,发送给request.php
并显示。
然而,将{pdf}发送到action.php
的{{1}}内的javascript始终无法运行。我已经尝试了多种方法来实现它,但我似乎无法找到另一种方法来传递所需的所有数据,因为数据需要传递两次:首先作为原始数据的数组,然后作为由mail.php
和html2canvas
生成的pdf。
如果我在jsPDF
内放置iframe
隐藏的mail.php
,它会正常运行并发送电子邮件,但它将是一个空的pdf,但未填充来自{的任何数据{1}}(显然)。
我可以想到一些可能的解决方案,但我无法弄清楚如何实现它们:
1)似乎问题是javascript不喜欢运行嵌套,但也许有一种方法可以强制action.php
内的javascript代码运行,以便生成pdf并发送给{{ 1}}。
2)也许有一种方法可以只使用一个我没有看到的数据传递来完成所有操作。
3)也许在request.php
内有一种方法可以将数据数组传递给action.php
mail.php
,这将格式化html div并生成pdf,然后将其发送出去到action.php
,但我认为即使我能完成这项工作,我也会遇到iframe
无法运行并将pdf发送到process.php
的javascript问题。
答案 0 :(得分:1)
您对JavaScript和PHP如何协同工作有一个相当正常的(开始)误解。 PHP在您的服务器上运行。 JavaScript在您用户的浏览器上运行。根据您的上述内容,您要做的是:
request.php
action.php
处理数据请求,并将格式化表格发送给JS mail.php
你应该做什么:
request.php
action.php
处理数据请求
action.php
致电mail.php
,并将表格action.php
将表格发送回JS mail.php
电子邮件发送出去你问为什么JavaScript永远不会被运行以将数据发送到第三个脚本,那是因为你可能永远不会调用它。更重要的是,如上所示,您不需要它:只需action.php
致电mail.php
。
答案 1 :(得分:0)
也许不是我想要的答案,但是因为我知道我不想像马修建议的那样使用php pdf创作,所以最终为我工作了。
由于request.php
的javascript与action.php
配合使用,我最终将action.php
的html表格发送回request.php
,然后request.php
}致电mail.php
。