javascript - 通过多个 php 文件通过 javascript POST 数据

标签 javascript php jquery ajax

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

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

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

如果我将 mail.php 的隐藏 iframe 放入 action.php 中,它将正常运行并发送电子邮件,但它会是一个空的 pdf,未填充 request.php 中的任何数据(显然)。

我可以想到一些潜在的解决方案,但我不知道如何实现它们:

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

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

3)也许在 action.php 内部有一种方法可以将数据数组传递给 process.phpiframe ,这将格式化 html div 并生成 pdf,然后将其发送到 mail.php,但我假设即使我能完成此操作,我也会在 process 中遇到与 javascript 相同的问题.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

关于javascript - 通过多个 php 文件通过 javascript POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35213958/

相关文章:

php - 输入类型 ="file"更改后是否可以重新加载表单?

javascript - 用于移动设备的 Html 导航栏菜单

php - 在 Laravel 5.1 中使用 .env 设置存储路径

javascript - 复选框将所有选项而不是一个存储到数据库中

php - SQL高效的计划生成算法

javascript - 使用 jQuery 或 Javascript 将对象数组转换为 HTML 表格

php - PHP 中的自动返回命令

javascript - 从本地存储中删除项目

javascript - 显示/隐藏从函数中提取的标记

Jquery 删除类不工作