gpt4 book ai didi

php - 表单上的两个提交按钮单击后每个按钮都会重定向到不同的页面?

转载 作者:行者123 更新时间:2023-12-02 18:52:20 24 4
gpt4 key购买 nike

我承认我对此有点不知所措。我的时间已经不多了,因为我需要在周一之前让这个页面正常工作,而且我已经绝望了;上周我用谷歌搜索并梳理了 stackoverflow 的答案,但我仍然不知道如何让它发挥作用。

我有 1 个表格,底部有两个提交按钮,“保留预订”和“立即预订”。每个按钮都需要提交表单数据(只是在电子邮件中,没什么花哨的),然后重定向到预订确认静态 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 很陌生(我一边走一边学习)。我真的很感激这里的任何帮助。谢谢!!

最佳答案

这就是 jQuery 成为你最好 friend 的地方!

两个带有 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 的方式。

您还可以使用函数参数中的data变量将数据传递到“page.php”。

您只需重命名按钮名称,然后在提交页面的帖子中检测它,即可检测您在提交表单中按下的按钮

上述解决方案请引用此页面:
stackoverflow.com/questions/547821/two-submit-buttons-in-one-form

关于php - 表单上的两个提交按钮单击后每个按钮都会重定向到不同的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com