2017-02-02 3 views
0

Bootstrapiousからいくつかのファイルをダウンロードして、PHPフォームを動作させました。私はそれを電子メールで送信しますが、私が何をしても、成功メッセージ(フォーマットなし)の空白ページとして出てくるPHPファイルにリダイレクトされます。PHPの連絡フォームがcontact.phpにリダイレクトされ、成功メッセージ

HTML

<form id="contact-form" method="post" action="../prueba/assets/php/contact.php"> 
<div class="messages"></div> 
<div class="controls"> 
<div class="form-group"> 
<label for="name">Nombre</label> 
<input id="name" type="text" name="name" class="form-control" placeholder="Escribe tu nombre" required data-error="Por favor, escribe tu nombre."> 
<label for="email">Email</label> 
<input id="email" type="email" name="email" class="form-control" placeholder="Escribe tu e-mail" required data-error="Por favor, escribe tu e-mail."> 
<label for="comment">Mensaje</label> 
<textarea id="comment" name="comment" class="form-control" rows="3" required data-error="Por favor, escribe tu mensaje."></textarea> 
<div class="help-block with-errors"></div> 
</div> 
<button type="submit" class="btn btn-default">Enviar <span class="glyphicon glyphicon-send"></button> 
</div> 

PHP

<?php error_reporting(E_ALL); ini_set('display_errors', 1); 
// configure 
$from = 'Con Ilan a la India <[email protected]>'; 
$sendTo = '[email protected]'; 
$subject = 'Nuevo mensaje del formulario'; 
$fields = array(); 
$fields["name"] = "Nombre"; 
$fields["email"] = "E-mail"; 
$fields["comment"] = "Message"; // array variable name => Text to appear in the email 
$okMessage = 'El formulario ha sido enviado correctamente. Te contactaremos dentro de poco.'; 
$errorMessage = 'Ha ocurrido un error al enviar el formulario. Por favor, inténtalo nuevamente.'; 

// let's do the sending 

try 
{ 
$emailText = "Hay un nuevo mensaje de la web Con Ilan a la India"; 

foreach ($_POST as $key => $value) { 

    if (isset($fields[$key])) { 
     $emailText .= "$fields[$key]: $value\n"; 
    } 
} 

$headers = array('Content-Type: text/html; charset="UTF-8";', 
    'From: ' . $from, 
    'Reply-To: ' . $from, 
    'Return-Path: ' . $from, 
); 

mail($sendTo, $subject, $emailText, implode("\n", $headers)); 

$responseArray = array('type' => 'success', 'message' => $okMessage); 
} 
catch (\Exception $e) 
{ 
$responseArray = array('type' => 'danger', 'message' => $errorMessage); 
} 

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
$encoded = json_encode($responseArray); 

header('Content-Type: application/json'); 

echo $encoded; 
} 
else { 
echo $responseArray['message']; 
} 

JS

$(function() { 

$('#contact-form').validator(); 

$('#contact-form').on('submit', function (e) { 
    if (!e.isDefaultPrevented()) { 
     var url = "../prueba/assets/php/contact.php"; 

     $.ajax({ 
      type: "POST", 
      url: url, 
      data: $(this).serialize(), 
      success: function (data) 
      { 
       var messageAlert = 'alert-' + data.type; 
       var messageText = data.message; 

       var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>'; 
       if (messageAlert && messageText) { 
        $('#contact-form').find('.messages').html(alertBox); 
        $('#contact-form')[0].reset(); 
       } 
      } 
     }); 
     return false; 
    } 
}) 
}); 
+0

'e.preventDefault()'を追加する必要があります。それ以外の場合は、フォームを送信し続けます。それはリダイレクトではなく、アクションURLへのPOSTです。 – jboneca

+0

まだ何も:/ –

答えて

0

それを解決しました。 index.html本文でvalidator.jsもcontact.jsも正しく呼び出していませんでした。ダー。気にして申し訳ありません!

関連する問題