0

我承认我在这方面太过头了。我的时间不多了,因为我需要这个页面在星期一之前工作,我越来越绝望了;上周我一直在谷歌搜索和梳理 stackoverflow 的答案,但我仍然不知道如何让它发挥作用。

我有 1 个表单,底部有两个提交按钮,HOLD RESERVATION 和 BOOK NOW。每个按钮都需要提交表单数据(只是在电子邮件中,没什么特别的),然后重定向到预订确认静态 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非常熟悉(我在这里学习)。我真的很感激这里的任何帮助。谢谢你!!

4

4 回答 4

1

一个更简单的jquery方法:

$('#buttonid1').click(function() {
    $('#formid').attr('action', '/path/page1/');
    $('#formid').submit();
});
$('#buttonid2').click(function() {
    $('#formid').attr('action', '/path/page2/');
    $('#formid').submit();
});

只是在说...

于 2014-03-15T09:47:36.530 回答
1

这就是 jQuery 是你最好的朋友的地方!

两个带有 ID 的按钮。

<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 请求(表单提交),然后重定向!布姆。

$('#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

于 2013-03-29T16:03:49.933 回答
0

尝试命名您的提交按钮ReservationBook,如下所示:

<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">
于 2013-03-29T16:13:38.353 回答
0

为什么不使用表单标签中的按钮?并导航?

<form id="formid" action="link" method="post">
于 2013-03-29T15:39:04.537 回答