2016-10-15 3 views
2

Мне нужно отправить электронное письмо при отправке запроса на mail.php, значения данных пустые. Я не могу понять, почему это происходит, и попробовал множество разных вещей.Отправка данных на PHP через Ajax?

Ajax:

$.ajax({ 
url: 'mail.php', 
action: 'POST', 
data: { 
    'name_first': "First", 
    'name_last': "Last", 
    'title': "Test Title", 
    'topic': "Test Topic", 
    'mailer': "[email protected]", 
    'mail': "This is a message" 
}, 
success: function (response) { 
     alert(response) 
}, 
error: function(xhr, textStatus, error){ 
    console.log(xhr.statusText); 
    console.log(textStatus); 
    console.log(error); 
}}); 

PHP:

<?php 

require_once 'swiftmailer/lib/swift_required.php'; 

$inf_name = $_POST['name_first'] . ' ' . $_POST['name_last']; 
$inf_title = $_POST['title']; 
$inf_topic = $_POST['topic']; 
$inf_mailer = $_POST['mailer']; 
$inf_message = $_POST['mail']; 

$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465) 
    ->setUsername('[email protected]') 
    ->setPassword('...'); 

$mailer = Swift_Mailer::newInstance($transport); 

$message = Swift_Message::newInstance("[" . $inf_topic . "] " . $inf_title) 
    ->setFrom(array($inf_mailer => $inf_name)) 
    ->setTo(array('[email protected]' => 'AstronStudios')) 
    ->setBody($inf_message, 'text/html'); 

return $mailer->send($message); 

ответ

2

Установить атрибут type вместо action, чтобы установить метод (GET или POST) запроса AJAX. Таким образом, код будет выглядеть следующим образом,

$.ajax({ 
url: 'mail.php', 
type: 'POST', 
data: { 
    'name_first': "First", 
    'name_last': "Last", 
    'title': "Test Title", 
    'topic': "Test Topic", 
    'mailer': "[email protected]", 
    'mail': "This is a message" 
}, 
success: function (response) { 
     alert(response) 
}, 
error: function(xhr, textStatus, error){ 
    console.log(xhr.statusText); 
    console.log(textStatus); 
    console.log(error); 
}}); 

Ссылка: http://api.jquery.com/jquery.ajax/

+0

Спасибо! Проведите так долго по такой простой проблеме. –

1
var formdata = new FormData($('form')[0]); 
$.ajax({ 
url: 'mail.php', 
type: 'POST', 
data: formdata , 
success: function (response) { 
     if(data.response === 'success') { 
alert(response); 
}else{ 
alert(response); 
} 
}, 
}); 
1

набор "тип" вместо "действия"

+0

no in js вам нужно использовать «тип» вместо «action», –