2016-10-13 4 views
0

私のウェブサイトは連絡メールを送信しておらず、エラー<div class="alert_box error"><i class="fa fa-exclamation-triangle"></i><p>undefined!</p></div>を表示しますが、JSも表示されるように設定されていません。私のコードにエラーがありますか?何が悪いのか教えてくれませんか?私のmailphpに何かエラーがありますか?

HTML:

<form id="contact_form2" class="contact_form var2"> 
      <ul> 
       <li> 
       <input type="text" name="cf_name" placeholder="Nome"> 
       </li> 
       <li> 
       <input type="text" name="cf_subject" placeholder="Assunto"> 
       </li> 
       <li> 
       <textarea name="cf_message" placeholder="Mensagem"></textarea> 
       </li> 
      </ul> 
      <button class="button type1"><span><span>Enviar</span><span>Enviar</span></span></button> 
      </form> 

PHP:

<?php 

$user_email = "[email protected]"; 

$mail = array(
    "name" => htmlspecialchars($_POST['cf_name']), 
    "email" => htmlspecialchars($_POST['cf_email']), 
    "subject" => htmlspecialchars($_POST['cf_subject']), 
    "message" => htmlspecialchars($_POST['cf_message']) 
); 

function validate($arr){ 

    return !empty($arr['name']) && strlen($arr['message']) > 20 && filter_var($arr['email'],FILTER_VALIDATE_EMAIL); 

} 

if(validate($mail)){ 

    echo mail($user_email, $mail['subject'], 
     "Name : {$mail['name']}\n" 
     ."E-mail : {$mail['email']}\n" 
     ."Message : {$mail['message']}" 
    ); 

} 


?> 

JS:

pageある
($('#contact_form2').length){ 

     var cf = $('#contact_form2'); 
     cf.append('<div class="message_container2"></div>'); 

     cf.on("submit",function(event){ 

      var self = $(this),text; 

      var request = $.ajax({ 
       url:"bat/mail.php", 
       type : "post", 
       data : self.serialize() 
      }); 

      request.then(function(data){ 
       if(data == "1"){ 

        text = "Sua mensagem foi enviada com sucesso!"; 

        cf.find('input:not([type="submit"]),textarea').val(''); 

        $('.message_container2').html('<div class="alert_box success"><i class="fa fa-smile-o"></i><p>'+text+'</p></div>') 
         .delay(150) 
         .slideDown(300) 
         .delay(4000) 
         .slideUp(300,function(){ 
          $(this).html(""); 
         }); 

       } 
       else{ 
        if(cf.find('textarea').val().length < 20){ 
         text = "Sua mensagem deve conter no mínimo 20 caracteres!" 
        } 
        if(cf.find('input').val() == ""){ 
         text = "Todos os campos devem ser preenchidos!"; 
        } 
        $('.message_container2').html('<div class="alert_box error"><i class="fa fa-exclamation-triangle"></i><p>'+text+'</p></div>') 
         .delay(150) 
         .slideDown(300) 
         .delay(4000) 
         .slideUp(300,function(){ 
          $(this).html(""); 
         }); 
       } 
      },function(){ 
       $('.message_container2').html('<div class="alert_box error"><i class="fa fa-exclamation-triangle"></i><p>Falha na conexão com o servidor!</p></div>') 
         .delay(150) 
         .slideDown(300) 
         .delay(4000) 
         .slideUp(300,function(){ 
          $(this).html(""); 
         }); 
      }); 

      event.preventDefault(); 
     }); 

    } 

+0

可変テキストが定義されていないため、定義されていません。それを文字列として印刷しています。 – Phiter

+1

if(cf.find( 'textarea').val()。length <20){...} if(cf.find( 'input').val()== ""){..} }}。それらのどちらも真実でないとどうなりますか? 'text'は決して値を割り当てられません、そうですか? –

答えて

0

エラーメッセージを出力する前に、textに値があるかどうかを検証します。

if(cf.find('textarea').val().length < 20){ 
    text = "Sua mensagem deve conter no mínimo 20 caracteres!" 
} 
if(cf.find('input').val() == ""){ 
    text = "Todos os campos devem ser preenchidos!"; 
} 
if (text != undefined && text != ""){ 
    $('.message_container2').html('<div class="alert_box error"><i class="fa fa-exclamation-triangle"></i><p>'+text+'</p></div>') 
     .delay(150) 
     .slideDown(300) 
     .delay(4000) 
     .slideUp(300,function(){ 
      $(this).html(""); 
     }); 
} 
関連する問題