2015-03-19 2 views
0

У меня есть форма для отправки по электронной почте на моей странице, и я не могу найти, что заставляет ее отбросить неудачное представление. Ниже приведены части кода, касающиеся формы. Я обошел js и просто использовал скрипт php напрямую и отправил почту, так что это не проблема. Есть идеи?e-mail отправить форму error

ЯШ:

$('#button-send').click(function(event){ 
     $('#button-send').html('Sending E-Mail...'); 
     event.preventDefault(); 

     $('html, body').scrollTo($('#contact'), 'fast'); 
     $.ajax({ 
      type: 'POST', 
      url: 'send_form_email.php', 
      data: $('#contact_form').serialize(), 
      success: function(html) { 
       if(html.success == '1') 
       { 
        $('#button-send').html('Send E-Mail'); 
        $('#success').show(); 
       } 
       else 
       { 
        $('#button-send').html('Send E-Mail'); 
        $('#error').show(); 
       }     
      }, 
      error: function(){ 
       $('#button-send').html('Send E-Mail'); 
       $('#error').show(); 
      } 
     }); 

    }); 


}); 


function valemail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 

Вот PHP код:

<?php 
// EDIT THE 2 LINES BELOW AS REQUIRED 
$send_email_to = "[email protected]"; 
$email_subject = "New Message"; 
function send_email($name,$email,$email_message) 
{ 
    global $send_email_to; 
    global $email_subject; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= "From: ".$email. "\r\n"; 
    $message = "<strong>Email = </strong>".$email."<br>"; 
    $message .= "<strong>Name = </strong>".$name."<br>"; 
    $message .= "<strong>Message = </strong>".$email_message."<br>"; 
    @mail($send_email_to, $email_subject, $message,$headers); 
    return true; 
} 

function validate($name,$email,$message) 
{ 
    $return_array = array(); 
    $return_array['success'] = '1'; 
    $return_array['name_msg'] = ''; 
    $return_array['email_msg'] = ''; 
    $return_array['message_msg'] = ''; 
    if($email == '') 
    { 
    $return_array['success'] = '0'; 
    $return_array['email_msg'] = 'email is required'; 
    } 
    else 
    { 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email)) { 
     $return_array['success'] = '0'; 
     $return_array['email_msg'] = 'enter valid email.'; 
    } 
    } 
    if($name == '') 
    { 
    $return_array['success'] = '0'; 
    $return_array['name_msg'] = 'name is required'; 
    } 
    else 
    { 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if (!preg_match($string_exp, $name)) { 
     $return_array['success'] = '0'; 
     $return_array['name_msg'] = 'enter valid name.'; 
    } 
    } 

    if($message == '') 
    { 
    $return_array['success'] = '0'; 
    $return_array['message_msg'] = 'message is required'; 
    } 
    else 
    { 
    if (strlen($message) < 2) { 
     $return_array['success'] = '0'; 
     $return_array['message_msg'] = 'enter valid message.'; 
    } 
    } 
    return $return_array; 
} 

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 


$return_array = validate($name,$email,$message); 

if($return_array['success'] == '1') 
{ 
    send_email($name,$email,$message); 
} 
header('Content-type: text/json') 
echo json_encode($return_array); 
die(); 
?> 

и HTML на моей странице:

 <form method="post" action="send_form_email.php" id="contactform"> 
      <div> 
       <label for="name">Enter your name</label> 
       <input type="text" class="input-field" id="name" name="name" value=""> 
      </div> 
      <div> 
       <label for="email">Enter your e-mail</label> 
       <input type="text" class="input-field" id="email" name="email" value=""> 
      </div> 
      <div> 
       <label>Type Your Message</label> 
       <textarea id="message" name="message"></textarea> 
      </div> 
      <a id="button-send" href="#" title="Send Email" class="button" style="width:100%;">Send E-Mail</a> 
      <div id="success">Your message has been successfully!</div> 
      <div id="error">Unable to send your message, please try later.</div> 
     </form> 
+0

Что вы подразумеваете под «ударом назад неудачной подачи»? Я предлагаю удалить подавление ошибок (символ @ перед функцией) из вызова mail(). Кроме того, что такое ОС? Это имеет значение с почтой PHP. –

+0

Ubuntu 14. С передней стороны при отправке формы отображается сообщение «Не удалось отправить ваше сообщение, пожалуйста, попробуйте позже». Как я уже упоминал, я протестировал скрипт php, заменив текущую кнопку на ввод типа отправки, и он отправил почту только после вызова php-скрипта. У меня очень мало опыта Java, поэтому мне сложно определить, что происходит при использовании ajax. – cassiusclay

+0

Я обнаружил следующую ошибку в моих журналах apache Ошибка PHP-анализа: ошибка синтаксиса, неожиданный заголовок (T_STRING) в /var/www/html/send_form_email.php в строке 80 – cassiusclay

ответ

0

положить запятой как этот заголовок ("Content -type: text/json ');

+0

Не могу поверить, что я пропустил это как-то : | – cassiusclay

0

Я просто потратил немного времени на устранение неполадок с этим кодом, который у меня есть с темой HTML5, которую я загрузил из eGrappler некоторое время назад, поэтому, чтобы сэкономить время для тех, кто наткнулся на этот пост, как я, код примера другая ошибка и, вероятно, не сработает.

В .js говорится

"data: $('#contact_form').serialize(),"

однако идентификатор формы в HTML является «ContactForm» без подчеркивания

id="contactform">"

Они должны соответствовать, иначе пост выиграл» t содержит имя, адрес электронной почты или сообщение, и электронное письмо никогда не будет отправлено.

Надеюсь, что это спасет кого-то от отладки, которую я сделал .. в конце концов, но это была кривая обучения!