2015-02-15 5 views
-1

Я посмотрел на другие ответы SO, и я не получаю ответа. Я делаю простую форму HTML с PHP-скриптом, который отправляет электронное письмо. Просто. Кроме того, что он не работает. Вот HTML:PHP-форма отправляет пустое электронное письмо

<form action="" method="post" id="contactform"> 
    <fieldset> 
     <legend>Contact Form</legend> 
     <p><label>First Name: </label><input type="text" name="first_name" class="text" required></p> 
     <p><label>Last Name: </label><input type="text" name="last_name" class="text" required></p> 
     <p><label>Email: </label><input type="text" name="email" class="text" required></p> 
     <p><label>Message:</label><textarea rows="5" name="message" cols="30" class="message" required></textarea></p> 
     <input type="submit" name="submit" value="Submit" class="submit"> 
    </fieldset> 
</form> 

Вот AJAX:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script> 
    $("#contactform").submit(function(){ 
     $.get("contactsend.php", function(data){ 
     alert(data); 
     }) 
     return false; 
    }) 
</script> 

И вот contactsend.php:

<?php 
$to = "[email protected]"; // this is your Email address 
$from = $_POST['email']; // this is the sender's Email address 
$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$subject = "Form submission"; 
$message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message']; 

$headers = "From: " . $from; 
if (mail($to,$subject,$message,$headers)) { 
    echo "Mail sent."; 
} else { 
    echo "An error occured. Try again later."; 
} 

>

Когда нажмите на кнопку отправить, страница говорит " Mail отправлен. ", Но письмо проходит через пробел. Я не уверен, почему массив _POST будет пустым. Может кто-нибудь, пожалуйста, помогите мне?

Заранее спасибо :)

+0

Вы пропустили отправку данных формы на свой сервер: [jQuery.get (url, data, success)] (http://api.jquery.com/jquery.get/#jQuery-get-url- data-success-dataType) – Andreas

+0

Извините, я учусь на лету. Где я могу это сделать? –

ответ

0

Ваша проблема вы не передаются какие-либо данные на сервер с помощью AJAX пока.

попробовать с этим:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script> 
$("#contactform").submit(function(){ 
    jQuery.ajax({ 
     type: "POST", 
     url: "contactsend.php", 
     data: jQuery(this).serialize(), 
     success: function(data){ 
      alert(data); 
     } 
    }); 
    return false; 
}) 
</script> 

Php:

<?php 
$to   = "[email protected]"; // this is your Email address 
$from  = $_POST['email']; // this is the sender's Email address 
$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$subject = "Form submission"; 
$message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message']; 

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; 
$headers .= 'From: ' .$from. "\r\n"; 

if (mail($to,$subject,$message,$headers)) { 
    echo "Mail sent."; 
} else { 
    echo "An error occured. Try again later."; 
} 
+0

Последнее редактирование работало! Спасибо! –

0

попробовать:

$date = date('r'); 

$phpversion = phpversion(); 

$headers = "From: ".$from."\nDate: ".$date."\nX-Mailer: PHP v".$phpversion."\nMIME-Version: 1.0\nContent-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit"; 
+0

Я пробовал, это не сработало:/ –

0

Вы пропустили отправить значения из формы на сервер.
Чтобы получить значения, вы можете использовать .serialize(). Он преобразует их в строку с правильно закодированными значениями.

$("#contactform").submit(function() { 
    $.get("contactsend.php", $(this).serialize(), function(data) { 
     alert(data); 
    }); 
    return false; 
}); 
+0

По какой-то причине это не сработало. –

0

Вы не посылать никаких данных, попробуйте этот

<script  src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script> 
$("#contactform").submit(function(){ 
var details = $(this).serialize(); 
    $.get("contactsend.php",details, function(data){ 
    alert(data); 
    }) 
    return false; 
}) 
</script> 

Функция «сериализация» создает строку запроса автоматически для формы, вы можете сериализовать отдельные поля ввода.

+0

Это не сработало. –

+0

https://developers.google.com/speed/libraries/devguide#jquery – adelowo

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