2014-02-18 3 views
0

Еще один глупый вопрос от новичка. У меня есть эта функция:Проблема с PHP и AJAX с отправкой данных

$(document).ready(function() { 
    $('#submit-form').click(function(e){ 

     e.preventDefault(); 
     var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
     var name  = $('#name').val(), 
      email = $('#email').val(), 
      phone = $('#phone').val(), 
      date  = $('#date').val(), 
      message = $('#message').val(), 
      data_html, 
      success = $('#success'); 

     if(name == "") 
      $('#name').val('Please enter your name.'); 

     if(phone == "") 
      $('#phone').val('Please enter your phone number.'); 

     if(date == "") 
      $('#date').val('Please enter a date and time.'); 

     if(email == ""){ 
      $('#email').val('Your email is required.'); 
     }else if(reg.test(email) == false){ 
      $('#email').val('Invalid Email Address.'); 
     } 

     if(message == "") 
      $('#message').val('Message is required.'); 

     if(message != "" && name != "" && reg.test(email) != false) { 
      data_html = "name=" + name + "&email="+ email + "&message=" + message + "&phone="+ phone + "&date="+ date; 

      //alert(data_html); 
      $.ajax({ 
       type: 'POST', 
       url: '../contact_form.php', 
       data: data_html, 
       success: function(msg){ 

        if (msg == 'sent'){ 
         success.html('<div class="alert alert-success">Message <strong>successfully</strong> sent!</div>') ; 
         $('#name').val(''); 
         $('#phone').val(''); 
         $('#email').val(''); 
         $('#date').val(''); 
         $('#message').val(''); 

        }else{ 
         success.html('<div class="alert alert-error">Message <strong>NOT</strong> sent! Please try again later. </div>') ; 

        } 
       } 
      }); 

     } 
     return false; 
    }); 
}); 

И я создал этот PHP, который может быть неправильным поэтому, пожалуйста, не судите меня ... Я все еще учусь :) Я всего новичку это так, пожалуйста, не дайте мне тяжелое время :)

<?php 


$to = '[email protected]'; 

$subject = 'Request a Booking'; 


if($to) { 
$name = $_POST['name']; 
$email = $_POST['email']; 

$fields = array(
    0 => array(
     'text' => 'Name', 
     'val' => $_POST['name'] 
    ), 
    1 => array(
     'text' => 'Email address', 
     'val' => $_POST['email'] 
    ), 
    2 => array(
     'text' => 'Phone', 
     'val' => $_POST['phone'] 
    ), 
    3 => array(
     'text' => 'Date & Time', 
     'val' => $_POST['date'] 
    ), 
    4 => array(
     'text' => 'Message', 
     'val' => $_POST['message'] 
    ) 
); 

$message = ""; 

foreach($fields as $field) { 
    $message .= $field['text'].": " . htmlspecialchars($field['val'],  ENT_QUOTES) . "<br>\n"; 
} 
ini_set("SMTP","aspmx.l.google.com"); 
$headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=utf-8\r\n"; 
$headers .= "From: \"" . $name . "\" \r\n"; 
$headers .= "Reply-To: " . $email . "\r\n"; 
$message = utf8_decode($message); 

mail($to, $subject, $message, $headers); 

?>

Я постоянно получаю сообщение об ошибке, что сообщение не отправлено. Думаю, он не связан с моим PHP. Любой совет?

+0

вы установили почтовый_сервер? – krishna

+0

Нет, я просто пытаюсь отправить его на свой адрес электронной почты. – user2976554

+0

нажмите f12, см. Окно консоли. Отображается любая ошибка. –

ответ

1

Вы не «отвечаете» ни о чем из вашего файла PHP. Попробуйте заменить свою «почту()» вызов с этим:

if (mail($to, $subject, $message, $headers)) { 
    echo 'sent'; 
} else { 
    echo 'not sent'; 
} 
0

В АЯКСЕ обратного вызова, вы проверяете для

if (msg == 'sent') 

где тзд является ответом ответа запроса AJAX.

Но в вашем файле php вы не отправляете никакого ответа. Попробуйте,

$status = mail($to, $subject, $message, $headers); 
echo $status ? 'sent' : 'failed'; 

И в успех обратного вызова Ajax,

if($.trim(msg) == 'sent') { 
    //some code 
} 
+0

К сожалению, это не сработает. Любые другие идеи? – user2976554

+0

Какой ответ вы получаете? Проверьте с помощью firebug или каких-либо инструментов для разработчиков? ' – Ramesh

+0

На сайте im im сообщение не отправлено - это правильно. Но почему он не будет отправлен? в консоли я получаю: console.markTimeline устарела. Вместо этого используйте console.timeStamp. – user2976554

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