2016-04-29 11 views
0

Ich habe ein Formular, und wenn ich es einreiche, geht es auf eine andere Seite. Um das zu beheben, habe ich das Aktionsfeld im HTML leer gelassen. Aber jetzt sendet der PHP die Mail nicht.
Ich möchte auf der gleichen Seite bleiben, die E-Mail senden und eine Bestätigungsnachricht erhalten. Ich habe nicht so viel Wissen darüber, und ich kann es nicht selbst beheben. Hier ist der Code:Formular absenden, auf der gleichen Seite bleiben und Nachrichtenbestätigung

<form id="idForm"method="post" action=""> 
        <div class="row 50%"> 
         <div class="6u 12u$(mobile)"><input id="nome" required="required" type="text" class="text" name="name" placeholder="Nome" /></div> 
         <div class="6u$ 12u$(mobile)"><input id="email" required="required" type="email" class="text" name="email" placeholder="Correo electrónico" /></div> 
         <div class="12u$"> 
          <textarea id="mensaxe" required="required" name="mensaxe" placeholder="Mensaxe"></textarea> 
         </div> 
         <div class="12u$"> 
          <ul class="actions"> 
           <li><input type="submit" value="Enviar mensaxe" /> 
           <span id="message"></span> 

           </li> 
          </ul> 
         </div> 
        </div> 
       </form> 

und hier die PHP

<?php 
if(isset($_POST['email'])) { 

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias 
$email_to = "[email protected]"; 
$email_subject = "Contacto desde el sitio web"; 

// Aquí se deberían validar los datos ingresados por el usuario 
if(!isset($_POST['name']) || 
!isset($_POST['email']) || 
!isset($_POST['mensaxe'])) { 

echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />"; 
echo "Por favor, vuelva atrás y verifique la información ingresada<br />"; 
die(); 
} 

$email_message = "Detalles del formulario de contacto:\n\n"; 
$email_message .= "Nombre: " . $_POST['name'] . "\n"; 
$email_message .= "E-mail: " . $_POST['email'] . "\n"; 
$email_message .= "Comentarios: " . $_POST['mensaxe'] . "\n\n"; 


// Ahora se envía el e-mail usando la función mail() de PHP 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 


} 
?> 

Und die js

$("#idForm").submit(function() { 
    event.preventDefault(); 

    var url = "../php/formulario.php"; // the script where you handle the form input. 

    $.ajax({ 
      type: "POST", 
      url: url, 
      data: $("#idForm").serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
       $("message").text("Success Message"); 
      } 
     }); 

    return false; // avoid to execute the actual submit of the form. 
}); 

Ich schätze jede Hilfe !! Vielen Dank.

+0

Auf Ihrem Skript verwendet nur 'header ('Location: url') ; 'um zur Seite zurückzukehren. Alternativ fügen Sie das Skript auf derselben Seite ein und verwenden Sie ajax, um auf dieselbe Seite zu posten. – Matt

+0

event.preventDefault sollte tun, was Sie brauchen, aber in Ihrer js sieht es nicht so aus, als hätten Sie das Ereignis bestanden, versuchen Sie $ ('#idForm'). submit (function (event) {..... –

+0

Sie vermissen auch eine '#' in Ihrem jQuery. Sollte '$ (' # message ') sein. text (...) ' – ImClarky

Antwort

2

Ereignis fehlt in dem Funktionsparameter

$("#idForm").submit(function(event) { 
0

in Ihrem js, Sie so ändern müssen:

$("#idForm").submit(function(e) { 
    e.preventDefault(); 

für nicht per Post senden Sie das Formular in der gleichen Seite (Aktion leer = gleiche Seite)

Und in Ihrem ajax, haben Sie einen Fehler:

$("message").text("Success Message"); 
$("#message").text("Success Message"); //CORRECT with # 

können Sie Funktion (Daten) für die Funktion (html) ändern und eine alert (html) machen sehen, was die PHP-Seite sagen ..;)

Verwandte Themen