2013-11-14 9 views
-3

Я пытаюсь использовать свою форму электронной почты, но что-то не так. У меня нет проблем с получением электронной почты, но процесс сценария ajax с JSON (проверка достоверности) не работает должным образом, и я не знаю почему.Проверка формы PHP с помощью AJAX

Мой HTML:

<form id="feedback" method="post" action=""> 

     <div class="enter-data"> 
      <label for="name"><span>Nome:</span></label> 
      <input name="name" id="name" type="text" class="formbox"> 
     </div> 

     <div class="enter-data">     
      <label for="email"><span>E-mail:</span> </label> 
      <input name="email" id="email" type="text" class="formbox"> 
     </div> 

     <div class="enter-data">     
      <label for="telefone"><span>Telefone:</span></label> 
      <input name="telefone" id="telefone" type="text" class="formbox"> 
     </div> 

     <div class="enter-commnet"> 

      <label for="comments"></label> 
      <textarea name="comments" id="comments"></textarea> 

      </div> 
      <div class="button_comment-bx"> 
    <button class="button_comment last" name="send" id="send" type="submit">Enviar</button> 
       <button class="button_comment" name="reset" id="reset" type="reset">Limpar</button> 
      </div> 
     </form> 

Мой JQuery **

(EDITED)

**:

$(document).ready(function(){ 
    $("#feedback").submit(function(){ 

     $(".error").remove(); 

     var check = true; 
     var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 

     var name = $("#name").val(); 
     var email = $("#email").val(); 
     var telefone = $("#telefone").val(); 

     // Validate Name 
     if (name == '') { 
      check = false; 
      $('#name').after('<div class="error">* Preencha o seu nome!</div>'); 
     } 
     else if (name.length < 3) { 
      check = false; 
      $('#name').after('<div class="error">* Nome demasiado curto!!</div>'); 
     } 

     // Validate E-mail 
     if (email == '') { 
      check = false; 
      $('#email').after('<div class="error">* Preencha o seu email!</div>'); 
     } 
     else if (email.length < 5) { 
      check = false; 
      $('#email').after('<div class="error">* Email demasiado curto!</div>'); 
     } 
     else if(!emailPattern.test(email)){ 
      check = false; 
      $('#email').after('<div class="error">* E-mail não é válido!</div>'); 
     } 

     // Validate Telefone 
     if (telefone == '') { 
      check = false; 
      $('#telefone').after('<div class="error">* Preencha o seu telefone!</div>'); 
     } 
     else if (telefone.length < 5) { 
      check = false; 
      $('#telefone').after('<div class="error">* Telefone não é válido!</div>'); 
     } 


     // If validation is successful 
$.ajax({ 
    type: "POST", 
    url: "contact3.php", 
    data: $("#feedback").serialize(), 
    dataType: "json", 
    success: function(response){ 
     $("#comments").after('<div class="success">Email enviado com sucesso!</div>'); 
     $('#name').val(''); 
     $('#email').val(''); 
     $('#telefone').val(''); 
     $('#comments').val(''); 
    } 
}); 

    }); 
}); 

Мой PHP скрипт для отправки почты * *

(EDITED)

**

<?php 


$to ='[email protected]'; 
// Contact subject 
$subject ="Contacto Site"; 

$header="from: $name <$email>"; 

$nome = $_POST['name']; 
$email = $_POST['email']; 
$telefone = $_POST['telefone']; 
$mensagem = $_POST['comments']; 


// Corpo da mensagem 
$body = "Nome: ".$nome; 
$body.= "\n"; 
$body.= "Email: ".$email; 
$body.= "\n"; 
$body.= "Telefone: ".$telefone; 
$body.= "\n"; 
    $body.= "\n"; 
    $body.= nl2br($mensagem); 



    // Enter your email address 

    mail($to,$subject,$body,$header); 

echo json_encode(array('mailSuccess' => 1)); 

помогите мне пожалуйста!

+2

Что случилось? У вас есть ошибки, непредвиденное поведение? Пожалуйста, объясните больше;) –

+0

Не следует ли PHP возвращать сообщение sucess после отправки сообщения электронной почты и получать jQuery для проверки этого сообщения в функции успеха? – AdRock

+0

Вы не откликнулись на массив json, который содержит информацию о mailSuccess, как аякс должен знать, успешно ли выполняется вызов ajax. – aarryy

ответ

2

У вас отсутствует возвращаемое значение вашего скрипта. Вы должны повторить json_encoded строку, которая JQuery будет проверять в if (!response.mailSuccess)

<?php 
$to ='[email protected]'; // Contact subject $subject ="Contacto Site"; 

$header="from: $name <$email>"; 

$nome = $_POST['name']; $email = $_POST['email']; $telefone = $_POST['telefone']; $mensagem = $_POST['comments']; 


// Corpo da mensagem $body = "Nome: ".$nome; $body.= "\n"; $body.= "Email: ".$email; $body.= "\n"; $body.= "Telefone: ".$telefone; $body.= "\n"; $body.= "\n"; $body.= nl2br($mensagem); 



// Enter your email address 

mail($to,$subject,$body,$header); 

echo json_encode(array('mailSuccess' => 1)); 
?> 

EDITED:

$.ajax({ 
    type: "POST", 
    url: "contact3.php", 
    data: $("#feedback").serialize(), 
    dataType: "json", 
    success: function(response){ 
     $("#comments").after('<div class="success">Email enviado com sucesso!</div>'); 
     $('#name').val(''); 
     $('#email').val(''); 
     $('#telefone').val(''); 
     $('#comments').val(''); 
    } 
}); 
+0

Спасибо за помощь, но проблема продолжается, я думаю, что это проблема строки echo json_encoded, которую jquery будет проверять, если (! Response.mailSuccess). Как я сказал, что я получаю электронные письма из формы без каких-либо проблем, но сценарий не запускает последнюю часть проверки json – mauriatti

+0

@mauriatti: тогда просто сделайте это, как я отредактировал ... – Legionar

+0

Большое спасибо за ваши усилия;), но теперь, когда я отправляю обновление страницы и становится пустым ... мой вопрос был отредактирован с вами советами. спасибо – mauriatti

Смежные вопросы