我承认我对此很满意。我已经没时间了,因为我需要这个页面在星期一之前工作,我已经绝望了;我花了最后一周的谷歌搜索和梳理stackoverflow的答案,我仍然无法弄清楚如何让它工作。
我有一个表格,底部有两个提交按钮,保留预订和现在预订。每个按钮都需要提交表单数据(只是在电子邮件中,没有任何花哨的东西),然后重定向到预订确认静态html页面或我的预订页面。
我已经尝试了这个,它可以很好地重定向,但不会通过电子邮件发送表单数据:
<input type="submit" onclick="var e = document.getElementById('mpNOV'); e.submit(); e.action='mp-NOVconfirm.shtml';" value="Hold my reservation" class="submit"></td>
<td width="45%" style="padding-top:10px; padding-bottom:10px; border-top: 1px solid #6f3957;">
<input type="submit" onclick="var e = document.getElementById('mpNOV'); e.submit(); e.action='../../index.shtml';" value="Book Now!" class="submit">
我尝试过我的FORM ACTION =“external.php”,这是php代码(基于我用于不同表单提交的php代码):
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
if(isset($_POST['Reservation']))
{
$subject = 'New Machu Picchu RESERVATION - November';
$emailadd = 'jodi@happywivestravel.com';
$url = 'http://www.happywivestravel.com/tour/machupicchu/mp-NOVconfirm.shtml';
$req = '0';
$text = "Results from form:\n\n";
$space = ' ';
$line = '
';
foreach ($_POST as $key => $value)
{
if ($req == '1')
{
if ($value == '')
{echo "$key is empty";die;}
}
$j = strlen($key);
if ($j >= 20)
{echo "Name of form element $key cannot be longer than 20 characters";die;}
$j = 20 - $j;
for ($i = 1; $i <= $j; $i++)
{$space .= ' ';}
$value = str_replace('\n', "$line", $value);
$conc = "{$key}:$space{$value}$line";
$text .= $conc;
$space = ' ';
}
mail($emailadd, $subject, $text, 'From: '.$emailadd.'');
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
}
if(isset($_POST['Book']))
{
$subject = 'New Machu Picchu BOOKING - November';
$emailadd = 'jodi@happywivestravel.com';
$url = 'http://www.happywivestravel.com/';
$req = '0';
$text = "Results from form:\n\n";
$space = ' ';
$line = '
';
foreach ($_POST as $key => $value)
{
if ($req == '1')
{
if ($value == '')
{echo "$key is empty";die;}
}
$j = strlen($key);
if ($j >= 20)
{echo "Name of form element $key cannot be longer than 20 characters";die;}
$j = 20 - $j;
for ($i = 1; $i <= $j; $i++)
{$space .= ' ';}
$value = str_replace('\n', "$line", $value);
$conc = "{$key}:$space{$value}$line";
$text .= $conc;
$space = ' ';
}
mail($emailadd, $subject, $text, 'From: '.$emailadd.'');
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
}
}
?>
但是我必须在这里做错了,因为当我点击提交按钮时没有任何反应。没有重定向,也没有通过电子邮件发送表单数据。
我原本想让这个函数使用验证码脚本,但我现在不得不废弃它。我只需要让这些提交按钮尽快正常工作。
我对PHP几乎一无所知,而且我用javascript非常环保(我正在学习,因为我去了这里)。我真的很感激这里的任何帮助。谢谢!!
答案 0 :(得分:1)
这就是jQuery是你最好的朋友!
两个有身份证的子女。
<input type="button" id="btn1" value="Hold my reservation" class="submit">
<input type="button" id="btn2" value="Book Now!" class="submit">
然后你将使用jQuery来检测两个按钮,按ID并在其中点击动作,并发送一个Ajax调用作为POST请求(表单提交),然后重定向! BOUM。
$('#btn1').click(function()
{
$.ajax(
{
url: "submit_script.php",
type: "POST",
data: {input1: input1, input2: input2},
dataType: "html",
success: function(data)
{
window.location = 'http://www.example.com/page.php';
}
});
});
$('#btn2').click(function()
{
$.ajax(
{
url: "submit_script.php",
type: "POST",
data: {input1: input1, input2: input2},
dataType: "html",
success: function(data)
{
window.location = 'http://www.example.com/page.php';
}
});
});
您可以在Ajax中获得创意,并发送您想要的每个输入字段。这就是您将它们分开,和/或将每次点击发送到不同的提交URL的方式。
您还可以使用函数参数中的数据变量将数据传递到“page.php”。
或强>
您可以通过重命名按钮名称来检测您在提交表单中按哪个按钮,然后在提交页面的帖子中检测到它。
参考此页面了解上述解决方案:
stackoverflow.com/questions/547821/two-submit-buttons-in-one-form
答案 1 :(得分:1)
更简单的jquery方法:
$('#buttonid1').click(function() {
$('#formid').attr('action', '/path/page1/');
$('#formid').submit();
});
$('#buttonid2').click(function() {
$('#formid').attr('action', '/path/page2/');
$('#formid').submit();
});
只是说...
答案 2 :(得分:0)
为什么不是表格标签中的按钮?用那个导航?
<form id="formid" action="link" method="post">
答案 3 :(得分:0)
尝试命名提交按钮Reservation
和Book
,如下所示:
<input type="submit" onclick="this.name='Reservation'; var e = document.getElementById('mpNOV'); e.submit(); e.action='mp-NOVconfirm.shtml';" value="Hold my reservation" class="submit"></td>
<td width="45%" style="padding-top:10px; padding-bottom:10px; border-top: 1px solid #6f3957;">
<input type="submit" onclick="this.name='Book'; var e = document.getElementById('mpNOV'); e.submit(); e.action='../../index.shtml';" value="Book Now!" class="submit">