2013-09-21 2 views
0

В последнее время у меня возникла проблема с прикреплением файла к электронной почте, я обращаюсь с этим, спасибо вам, ребята, кстати. Теперь у меня есть следующая проблема, связанная с «фиксированным» подключением файла. На самом деле проблем больше, чем я думал. 1) в приведенном ниже коде, в плагине проверки, я думал, что достаточно вызвать правила, подобные этому «name: requred», но это не так. Чтобы сделать это, я должен вызвать форму class = "required", почему? Когда я удаляю class = "requred", валидация больше не существует.submitHandler и .validate() issue

2) Хорошо, поэтому class = "required", небольшая проблема, валидация работает, но что происходит с submitHandler? ajax не запускается, обновляется сайт, и я получаю сообщение succes. Я хочу отправить электронную почту с вложением без refreshig.

3), что еще хуже, «сообщение», которое я написал в правило uploaded_file, которое должно показать, когда файл не загружен, не появляется, ввел сообщение из атрибута title (в форме).

так что все не так, как я должен был. Что я могу исправить/исправить/изменить, чтобы заставить его работать? пожалуйста, помогите мне

коды: форма:

<form method="post" name="formularzaplikacyjny" enctype="multipart/form-data" action="mail-attachment.php" id="formmail"> 

     <div id="imiediv"><label for="name">Imię i nazwisko: <em>*</em> </label><br> 
         <input type="text" name="name" id="name" class="required" title="Wpisz swoje imię i nazwisko" placeholder="Jan Kowalski"></div><br> 

     <div id="emaildiv"><label for="email">Email: <em>*</em> </label><br> 
         <input type="text" name="email" class="required" id="email" title="Wpisz swój adres email" placeholder="[email protected]"></div><br> 

     <div id="listdiv"><label for="message">List motywacyjny: <em>*</em></label><br> 
         <textarea name="message" rows="5" cols="48" class="required" id="message" title="Wpisz treść listu motywacyjnego" placeholder="Tutaj zpowinna znaleźć się treść Twojego listu motywacyjnego" ></textarea></div> 

     <div id="cvdiv"><label for="uploaded_file">Wybierz plik CV: <em>*</em></label><br> 
         <input type="file" name="uploaded_file" title="<h3>Wybierz plik CV do przesłania</h3>" class="required" id="uploaded_file"></div><br> 

         <input type="submit" value="Prześlij" name="submit" id="submitbutton"> 
         </form> 

         <div id="loading-mail"> 
          <h2>Wysyłamy maila.....</h2> 
          </div> 

проверки:

$("#formmail").validate({ 

    rules: { 
    email: { 
     required: true, 
     email: true 
    }, 
     name: { 
     required: true 

    }, 
    message: { 
     required: true 
    }, 
    uploaded_file: { 
     requred: true 
    } 
    }, //koniec literału obiektowego rules 
    messages: { 
     email: { 
     required: "<h3>Podaj adres e-mail.</h3>", 
     email: "<h3>To nie jest prawidłowy <br>adres e-mail.</h3>" 
     }, 
     name: { 
     required: "<h3>Podaj swoje imię i nazwisko.</h3>" 
     }, 
     message: { 
     required: "<h3>Wpisz treść listu motywacyjnego.</h3>" 
     }, 
     uploaded_file: { 
     requred: "<h3>Prześlij plik CV</h3>" 
    } 
    },submitHandler: function() { 


     var thisForm = $('#formmail'); 
     $('#formmail').fadeOut(function(){ 
      //Display the "loading" message 
      $("#loading-mail").fadeIn(function(){ 
      //Post the form to the send script 
      $.ajax({ 
       type: 'POST', 
       url: thisForm.attr("action"), 
       data: thisForm.serialize(), 
       //Wait for a successful response 
       success: function(data){ 
       //Hide the "loading" message 
       $("#loading-mail").fadeOut(function(){ 
        //Display the "success" message 
        $("#success").text(data).fadeIn(); 
       }); 
       } 
      }); 
      }); 
     }); 
     } 
    }); // koniec funkcji validate 

и отправка сценария:

<?php 
require "PHPMailer/class.phpmailer.php"; 



$mail = new PHPMailer(true); //New instance, with exceptions enabled 

$mail->CharSet = "UTF-8"; 
$bodys="<b>Podanie od:</b> ".$_POST['name']."<br/>"."<b>Adres e-mail: </b>".$_POST['email']."<br/>"."<b>Treść listu motywacyjnego: </b><br/>".$_POST['message']; 
$mail->Body =$bodys; 

$mail->IsSMTP(); // tell the class to use SMTP 
$mail->SMTPAuth = true; // enable SMTP authentication 
$mail->Port = 25; // set the SMTP server port 
$mail->Host = "mail.xxx.linuxpl.info"; // SMTP server 
$mail->Username = "username"; // SMTP server username 
$mail->Password = "pass"; // SMTP server password 

$mail->IsSendmail(); // tell the class to use Sendmail 

$mail->AddReplyTo($_POST['email'],$_POST['name']); 

$mail->From = $_POST['email']; //uzupełnij sobie 
$mail->FromName = $_POST['name']; //uzupełnij sobie 

$to = '[email protected]'; //na jaki mail wysłać np [email protected] 



$mail->AddAddress($to); 

$mail->Subject = "Nowe podanie o pracę"; 

$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 
$mail->WordWrap = 80; // set word wrap 

$mail->MsgHTML($bodys); 



$plik_tmp = $_FILES['uploaded_file']['tmp_name']; 
$plik_rozmiar = $_FILES['uploaded_file']['size']; 
$plik_nazwa = $_FILES['uploaded_file']['name']; 
if(is_uploaded_file($plik_tmp)) { 
$nazwa_g=$plik_nazwa; 

move_uploaded_file($plik_tmp, 'tmp_zal/'.$nazwa_g); 
$mail->AddAttachment('tmp_zal/'.$nazwa_g, $nazwa_g); 
} 





$mail->IsHTML(true); // send as HTML 




if(!$mail->Send()) 
{ 
echo "Błąd"; 
echo "Kod błędu: " . $mail->ErrorInfo; 
} 
else 
{ 
echo 'Wiadomość została wysłana'; 

} 

?> 

ответ

1

Вопросы 1 & 3 потому что вы неправильно required, как requred в uploaded_file правило и сообщение.

По вопросу 2 нужно return false от submitHandler, чтобы отменить отправку формы по умолчанию

jQuery(function ($) { 
    $("#formmail").validate({ 

     rules: { 
      email: { 
       required: true, 
       email: true 
      }, 
      name: { 
       required: true 

      }, 
      message: { 
       required: true 
      }, 
      uploaded_file: { 
       required: true 
      } 
     }, //koniec literału obiektowego rules 
     messages: { 
      email: { 
       required: "<h3>Podaj adres e-mail.</h3>", 
       email: "<h3>To nie jest prawidłowy <br>adres e-mail.</h3>" 
      }, 
      name: { 
       required: "<h3>Podaj swoje imię i nazwisko.</h3>" 
      }, 
      message: { 
       required: "<h3>Wpisz treść listu motywacyjnego.</h3>" 
      }, 
      uploaded_file: { 
       required: "<h3>Prześlij plik CV</h3>" 
      } 
     },submitHandler: function() { 


      var thisForm = $('#formmail'); 
      $('#formmail').fadeOut(function(){ 
       //Display the "loading" message 
       $("#loading-mail").fadeIn(function(){ 
        //Post the form to the send script 
        $.ajax({ 
         type: 'POST', 
         url: thisForm.attr("action"), 
         data: thisForm.serialize(), 
         //Wait for a successful response 
         success: function(data){ 
          //Hide the "loading" message 
          $("#loading-mail").fadeOut(function(){ 
           //Display the "success" message 
           $("#success").text(data).fadeIn(); 
          }); 
         } 
        }); 
       }); 
      }); 

      return false 
     } 
    }); 
}); 

Демы: Fiddle

Примечания: Аякс представление не будет работать из-за входной файл в form - для некоторых заместителей см. this answer

+0

ОК, поэтому я изменил его на: .......}, submitHandler: function() { $ ('# formmail'). FadeOut (function() { $ ("# loading-mail"). FadeIn (function() { var form = document.getElementById ('# formmail'); var formData = new FormData (form); $ .ajax ({ типа: 'POST', URL: form.attr ("действие"), данные: FormData, успех: функция (данные) { $ ("# погрузо-почта"). fadeOut (function() { $ ("# success"). текст (данные) .fadeIn(); }); и его все еще не работает, он останавливается при входе в сообщение загрузки. В дальнейшем ничего не происходит – user2760441

+0

yeeesss yeeessss черт возьми, он работает, я добавляю после «данных», как это: «processData: false, // сообщает jQuery, чтобы не обрабатывать данные contentType: false // сообщает jQuery, чтобы не устанавливать contentType», и он работает правильно теперь отлично, большое спасибо! – user2760441

+0

@ user2760441 проверить этот ответ как правильный, если он i s. – atilkan

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