通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单
Posted
技术标签:
【中文标题】通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单【英文标题】:Sending Dual Forms with one submit, while pulling the email field from first Form into the second 【发布时间】:2011-03-14 15:58:22 【问题描述】:我有两个表格需要发送 - 第一个表格是一个 php 邮件程序,它从一堆字段中获取信息并将其邮寄给一个recipent。该表单有一个复选框,如果选中,我需要通过另一个表单将来自该表单的电子邮件发送到列表服务器,将它们添加到邮件列表中。当单击第一个表单中的提交按钮时,我需要这一切发生。任何人都可以帮助我解决问题。谢谢。
表格
<form class="form_1" method="post" enctype="multipart/form-data" onSubmit="return validate()">
<div class="field">
<div class="text2">
<input type="text" id="name" value="<?php echo $_POST['name'];?>" name="name" title="Name" />
</div>
<!--text2-->
<div class="req">*</div>
<!--req-->
</div>
<!--field-->
<div class="field field_right">
<div class="text2">
<input type="text" id="email" name="email" value="<?php echo $_POST['email'];?>" title="Email" />
</div>
<!--text2-->
<div class="req">*</div>
<!--req-->
</div>
注册时事通讯 上传简历:
<div class="clearer"></div>
<br />
<div class="field">
<input type="submit" value="Send" class="btn3" />
</div>
<!--field-->
</form>
表格 2
<form action="http://www.example.com/mailing_list.html" method="post" name="xxxxxxx" onSubmit="return (!(UPTvalidateform(document.UPTmxxxxxx)));">
<input type="hidden" name="submitaction" value="3">
<input type="hidden" name="mlid" value="xxxxxx">
<input type="hidden" name="siteid" value="xxxxxx">
<input type="hidden" name="tagtype" value="q2">
<input type="hidden" name="demographics" value="-1">
<input type="hidden" name="redirection" value="http://www.xxxx.com/thankyou.php">
<input type="hidden" name="uredirection" value="http://">
<input type="hidden" name="welcome" value="">
<input type="hidden" name="double_optin" value="">
<input type="hidden" name="append" value="">
<input type="hidden" name="update" value="on">
<input type="hidden" name="activity" value="submit">
<tr><td colspan="2"></td></tr><tr><td> </td><td> <div class="text1"><input type="text" name="email" id="email" />
</div></td></tr><tr><td colspan="2"><button type="submit" name="send" value="send" class="button1"></button></td></tr>
【问题讨论】:
【参考方案1】:在您的表单上,将按钮绑定回 javascript 事件
<input type = 'button' value='Submit!' onclick='submitForms()' />
然后使用 javascript 函数 submitForms,实际提交您的两个表单。
document.forms["form1"].submit();
document.forms["form2"].submit();
【讨论】:
这依赖于浏览器来发出两个请求。通常,浏览器一次只会处理一个请求。那么这种方法可以依赖跨浏览器工作吗?如果不对其进行测试,我会想象提交第二个表单的调用会停止第一个表单的提交。 确实如此。我想你可以用一些花哨的 AJAX 做同样的事情,但你使用 CURL 的建议可能更优雅,假设 OP 已经或可以使 CURL 可用。【参考方案2】:您可能需要使用PHPs curl
wrapper 进行第二次提交,这样您就只有一张表格供用户填写。有什么理由必须有两张表格吗?
所以它会像这样工作:
-
用户提交表单
代码发送第一封电子邮件
如果选中复选框,则将
curl
请求提交到第二个表单
完成
最近的 SO 答案包含对 curl 发布请求过程的简单介绍:How to issue HTTP POST request?
【讨论】:
以上是关于通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单的主要内容,如果未能解决你的问题,请参考以下文章