私はこれについて頭を悩ませていることを認めます。月曜日までにこのページを機能させる必要があるため、時間がなくなり、必死になっています。私は先週、スタックオーバーフローの回答をグーグルで検索して調べましたが、これを機能させる方法がまだわかりません。
下部に 2 つの送信ボタン、HOLD RESERVATION と BOOK NOW がある 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には非常に慣れています(ここに行くにつれて学んでいます)。ここで何か助けていただければ幸いです。ありがとうございました!!