2017-11-02 17 views
0

私は自分の連絡先フォームを設定して送信した後、それを私のホームページにリダイレクトしますが、何らかの理由で同じページにとどまります。私は電子メールが送信された後、私のホームページにリダイレクトされた後で確認を受け取ろうとしています。私はPHPとJavaScriptを使用しています........................................... お問い合わせフォームは電子メールを送信していますが、送信後は応答しません。

<div class="col-sm-6 col-sm-offset-3"> 

    <h3>Send me a message</h3> 
    <form role="form" id="contactForm" action="index2.php" method="POST"> 
    <div class="row"> 
      <div class="form-group col-sm-6"> 
       <label for="name" class="h4">Name</label> 
       <input type="text" class="form-control" id="name" placeholder="Enter name" required> 
     </div> 
     <div class="form-group col-sm-6"> 
      <label for="email" class="h4">Email</label> 
      <input type="email" class="form-control" id="email" placeholder="Enter email" required> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="message" class="h4 ">Message</label> 
     <textarea id="message" class="form-control" rows="5" 
placeholder="Enter your message" required></textarea> 
    </div> 
    <button type="submit" id="form-submit" class="btn btn-primary btn-lg 
pull-right ">Submit</button> 
<div id="msgSubmit" class="h3 text-center hidden">Message Submitted!</div> 
    </form> 

index2.php

<meta http-equiv="refresh" content="0; url=http://myurl.com/" /> 


</header> 

<?php 
$name = $_POST["name"]; 
$email = $_POST["email"]; 
$message = $_POST["message"]; 

$EmailTo = "[email protected]"; 
$Subject = "New Message Received"; 

// prepare email body text 
$Body .= "Name: "; 
$Body .= $name; 
$Body .= "\n"; 

$Body .= "Email: "; 
$Body .= $email; 
$Body .= "\n"; 

$Body .= "Message: "; 
$Body .= $message; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From:".$email); 

// redirect to success page 
if ($success){ 
    echo "success"; 
}else{ 
echo "invalid"; 
} 
?> 

JS

$("#contactForm").submit(function(event){ 
// cancels the form submission 
event.preventDefault(); 
submitForm(); 
}); 

function submitForm(){ 
// Initiate Variables With Form Content 
var name = $("#name").val(); 
var email = $("#email").val(); 
var message = $("#message").val(); 

$.ajax({ 
    type: "POST", 
    url: "index2.php", 
    data: "name=" + name + "&email=" + email + "&message=" + message, 
    success : function(text){ 
     if (text == "success"){ 

      formSuccess(); 
     } 
    } 
}); 
} 
function formSuccess(){ 

$("#msgSubmit").removeClass("hidden"); 
} 

var confirmSubmit = true; 

$('form').submit(function(e) { 
    if (confirmSubmit) { 
    e.stopPropagation(); 

if (confirm('Are you sure you want to send this form?')) { 
    confirmSubmit = false; 

    $('form').submit(); 
}else{ 
    alert("The form was not submitted."); 
    } 
    } 
}); 
+0

あなたのホームページに実際にリダイレクトするコードはありません。あなたの ''は 'index2'でリフレッシュしません。 –

+0

あなたは何を複雑にしたのですか?大部分のブラウザとユーザーでウェブアプリケーションを完全に機能させるには、JSを最小限に抑えてください。より簡単で簡単なコードで簡単にやり遂げることができます。 –

答えて

0

あなたが実際に自分のホームページに戻ってリダイレクトしていません。 そのためにあなたが提出する関数の後に次のようなものを追加する必要があります、

window.location.replace("index2.php");

0

よりもむしろindex2.phpで<meta http-equiv="refresh" content="0; url=http://myurl.com/" />を使用してだけではなく、「成功」のスクリプトの末尾にheader("Location: http://myurl.com/");を追加したり、 "invalid"メッセージです。また、PHPコードが "ヘッダーはすでに送信されました。出力はオンラインで開始されました..."のようなエラーを防ぐ前にHTMLを削除してください。

+0

「ロケーション」とは何ですか?私は成功または無効の代わりにコードを追加し、何も変わらなかった? –

+0

"Location"は、ブラウザに指定されたURLを開くように指示するHTTPヘッダーです。あなたのケースでは、電子メールのデータを含むPOSTリクエストに応答することができます。詳細はhttps://en.wikipedia.org/wiki/HTTP_locationで確認できます。 – astax

関連する問題