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

我有3个php文件: request.php </ code>, action.php < / code>, mail.php </ code>。</ p>

request.php </ code>生成页面,根据 ajax发送的POST </ code>数据。 它以一个表单开头,具有多个字段。 单击 submit </ code>按钮时,ajax通过 POST </ code>将表单数据发送到 action.php </ code>。 action.php </ code>然后处理数据,将其存储在数据库中,并生成一个干净地布置数据的html div </ code>。 action.php </ code>然后使用 html2canvas </ code>和 jsPDF </ code>将html div </ code>转换成pdf,然后传递给 mail.php </ code>通过jquery POST </ code>通过 phpmailer </ code>通过电子邮件发送出去。 action.php </ code>然后生成一条成功消息,发送到 request.php </ code>并显示。 </ p>

但是, action.php </ code>中发送pdf到 mail.php </ code>的javascript总是无法运行。 我已经尝试了多种方法来实现它,但我似乎无法找到另一种方法来传递所需的所有数据,因为数据需要传递两次:首先作为原始数据的数组, 然后作为 html2canvas </ code>和 jsPDF </ code>生成的pdf。 </ p>

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

我可以想到一些可能的解决方案,但我无法弄清楚如何实现它们:</ p>

1)似乎问题是javascript没有 我想运行嵌套,但也许有办法强制运行 action.php </ code>中的javascript代码,以便生成pdf并发送到 mail.php </ code> 。 </ p>

2)也许有一种方法可以只使用一个我没有看到的数据传递来完成所有操作。 </ p>

3)也许在 action.php </ code>中有一种方法可以将数据数组传递给进程的 iframe </ code> .php </ code>将格式化html div并生成pdf,然后将其发送到 mail.php </ code>,但我认为即使我能完成这项工作,我也会遇到同样的问题 process.php </ code>中的javascript无法运行并将pdf发送到 mail.php </ code>。</ p>
</ div>

展开原文

原文

I have 3 php files: request.php, action.php,mail.php.

request.php generates the page, filling it with different data depending on the POST data sent by ajax. It starts as a form, with multiple fields. When you click the submit button, ajax sends the form data to action.php via POST. action.php then processes the data, storing it in the database, and generating an html div that cleanly lays out the data. action.php then uses html2canvas and jsPDF to to the html div into a pdf, which then is passed to mail.php via jquery POST to be emailed out with phpmailer. action.php then generates a success message which is sent to request.php and displayed.

However, the javascript inside action.php that sends the pdf to mail.php always fails to run. I've tried a variety of ways to do it, but I can't seem to figure out another way to pass all the data where it is needed, as the data needs to be passed twice: first as an array of raw data, then as a pdf generated by html2canvas and jsPDF.

If I place a hidden iframe of mail.php inside action.php it will run fine and send the email, but it will be an empty pdf not filled with any of the data from request.php (obviously).

I can think of a few potential solutions but I cannot figure out how to implement them:

1) It seems the issue is that javascript doesn't like to run nested, but perhaps there is a way to force the javascript code inside action.php to run so that the pdf is generated and sent to mail.php.

2) Maybe there is a way to do it all with only one data pass that I am not seeing.

3) Maybe there is a way while inside action.php to pass the data array to an iframe for process.php which would format the html div and generate the pdf and then send it off to mail.php, but I assume even if I could get that done I would run into the same problem of the javascript in process.php failing to run and send the pdf to mail.php.

doujianzi8521
doujianzi8521 不确定你使用会话是什么意思?
4 年多之前 回复
drnbotxo449747
drnbotxo449747 添加了代码。
4 年多之前 回复
duanping6698
duanping6698 您始终可以使用会话
4 年多之前 回复
douju2014
douju2014 发布您的代码,我们可以提供帮助。
4 年多之前 回复

2个回答



您对JavaScript和PHP如何协同工作有一个相当正常的(开始时)误解。 PHP在您的服务器上运行。 JavaScript在您用户的浏览器上运行。 根据您的上述内容,您要做的是:</ p>


  1. 通过 request.php </ code> </ li>加载初始页面
  2. 使用 action.php </ code>处理数据请求并将格式化表发送给JS </ li>
  3. 让JS将该表发送到 mail.php </ code> </ li>
    </ ol>

    您应该做什么:</ p>


    1. 通过<加载初始页面< code> request.php </ code> </ li>
    2. 使用 action.php </ code>处理数据请求


      • 操作 .php </ code>调用 mail.php </ code>,给它表</ li>
      • action.php </ code>将表发送回JS < / li>
        </ ul> </ li>
      • mail.php </ code>电子邮件发送出去</ li>
        </ ol>

        你问为什么JavaScript永远不会被运行以将数据发送到第三个脚本,那是因为你可能永远不会调用它。 更重要的是,如上所示,你不需要它:只需要 action.php </ code>调用 mail.php </ code>。</ p>
        </ div>

展开原文

原文

You have a fairly normal (for starting out) misunderstanding of how JavaScript and PHP work together. PHP runs on your server. JavaScript runs on your users' browsers. Based on what you have above, what you are trying to do is:

  1. load the initial page via request.php
  2. process a data request with action.php and send a formatted table to the JS
  3. have the JS send that table to mail.php

What you should be doing instead:

  1. load the initial page via request.php
  2. process a data request with action.php
    • have action.php call mail.php, giving it the table
    • have action.php send the table back to the JS
  3. have mail.php email out the table

You ask why the JavaScript never gets run to send the data to the third script, and that's because you likely never call it. More importantly though, as I show above, you don't need it: just have action.php call mail.php.

doulao1966
doulao1966 看看这个问题。 它(和其他类似的问题)显示了直接在PHP中生成PFD的一些方法。
4 年多之前 回复
donglie9067
donglie9067 我想我理解你所说的一些话。 但我相信我仍然需要在某些时候调用JS来生成pdf。 现在我的当前模型是:服务器为您提供一个表单,您填写它并将其发送回服务器。 服务器向您显示该表单的结果,然后服务器需要使用JS来基本上拍摄表单的图片。 然后将该图片发送到服务器,以便将其通过电子邮件发送出去。 即使我有action.php调用mail.php,我仍然需要在此之前的某个时刻运行JS来生成PDF所以action.php有一些东西要传递给mail.php
4 年多之前 回复
dtm41506
dtm41506 你没有action.php调用mail.php。 您正在使用response.php呈现的页面(我假设您的index.php页面)将从服务器(action.php)获取的数据发送回您的服务器(mail.php)。 关于如何从其他PHP脚本调用PHP脚本,这个问题有一个很好的答案。 可以这样想:在你当前的模型中,我要求桌子,你把它给我,然后你让我把它还给你,这样你就可以把它发送出去了。 剪出中间人。
4 年多之前 回复
douxianji3367
douxianji3367 添加了代码。 我觉得我确实有action.php调用mail.php。 也许我误解了你在说什么。 也许我的问题将通过示例代码更清晰。
4 年多之前 回复



也许不是我想要的答案,但是因为我知道我不想像Matthew建议的那样使用php pdf创建,这个 最终为我工作了。</ p>

由于 request.php </ code>的javascript与 action.php </ code>无关,我最终发送了 action.php </ code>中的html表回到 request.php </ code>,然后 request.php </ code>调用 mail.php </ code >。 </ p>
</ div>

展开原文

原文

Maybe not the answer I was looking for, but since I knew I didn't want to use php pdf creation as Matthew suggested, this ended up working for me.

Since request.php had the javascript that worked with action.php anyways, I ended up sending the html table from action.php back to request.php, and then having request.php call mail.php.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐