2011-02-19 2 views
4

Хорошо, чтобы сделать длинную историю короткой:jQuery/PHP mail отправить простой способ?

JavaScript:

jQuery("submit").click(function() { 

    var address = jQuery("#mail").val(); 
    var title = jQuery("#title").val(); 
    var name = jQuery("#name").val(); 
    var mail = jQuery("#email").val(); 
    var message = jQuery("#msg").val(); 

    alert(address); 
    alert(title); 
    alert(name); 
    alert(mail); 
    alert(message); 

    jQuery.post("sendmail.php", 
    {address: address, title: title, name: name, mail: mail , message: message}, 
    function(data){ 
     jQuery("#email").html("<div id='sent'><p>Thank you for the message.</p><p>We will reply as soon as possible.</p></div>"); 
     alert('sent'); 
    });  

return false;  
}); 

работает плавно (показывает каждое значение в боевой готовности), но никогда не показывает DIV "посланный". И никогда не отправляет фактическую почту.

sendmail.php находится в правильном месте, и это код:

<?php 

// getting variables from form 

$emailTo = trim($_REQUEST['address']); 
$subject = trim($_REQUEST['title']);; 
$name = trim($_REQUEST['name']); 
$emailFrom = trim($_REQUEST['mail']); 
$message = $_REQUEST['message']; 

// prepare email body text 

$Body = "You have a message from: "; 
$Body .= $name; 
$Body .= "\n"; 
$Body .= "\n"; 
$Body .= $message; 

// send prepared message 

$sent = mail($emailTo, $subject, $Body); 

//callback for jQuery AJAX 

if ($sent){ 
    echo 'sent'; 
} 
else{} 

print_r($_REQUEST); die(); 
?> 

Обновленный JQuery код, также не работает:

jQuery("#contact-form-send").click(function() {  

    var address = jQuery("#contact-form-mail-address").val(); 
    var title = jQuery("#contact-form-mail-title").val(); 
    var name = jQuery("#contact-form-name").val(); 
    var mail = jQuery("#contact-form-email").val(); 
    var message = jQuery("#contact-form-message").val(); 

    var data = "&address=" + address + "&title=" + title + "&name=" + name + "&mail=" + mail + "&message=" + message; 

    jQuery.ajax({ 
    type: "POST", 
    url: "sendmail.php", 
    data: data, 
    success: function(){ 
      jQuery(".email-us").html("<div id='email-sent'><p>Thank you for the message.</p><p>We will reply as soon as possible.</p></div>");  
    } 
}); 

return false;  
}); 
+0

@ kjy112, конечно, я работаю над этим, конечно :) Я полностью обновил первый пост, может быть, вы сможете найти проблему? Но, во-первых, я собираюсь проверить ваш метод с помощью .ajax. – anonymous

+0

вы закрыли свое заявление else, не вкладывая в него ничего ... возможно, 'print_r ($ _ REQUEST);'? – kjy112

+0

@ kjy112 ничего не меняет, кстати, у меня нет доступа к выходу sendmail.php, я просто нажимаю «submit», и появляется div. Больше ничего. Нет перенаправления на sendmail.php. – anonymous

ответ

5

Вы должны использовать Ajax. Это намного проще. Вот простой учебник здесь на отправку почты с помощью PHP, Ajax, & JQuery:

Send mail using PHP, Ajax and jQuery

это выглядело бы что-то похожее на это:

var data = "address=" + address + "&title=" + title + "&name=" + name + "&mail=" + mail + "&message=" + message; 
//or however u want to format your data 

$.ajax({ 
    type: "POST", 
    url: "sendmail.php", 
    data: data, 
    success: function(phpReturnResult){ 
      alert('Success: ' + phpReturnResult); 
      jQuery(".email-us").html("<div id='email-sent'><p>Thank you for the message.</p><p>We will reply as soon as possible. PHP Script's return result: " + phpReturnResult + "</p></div>");  
    }, 
    error: function(errormessage) { 
      //you would not show the real error to the user - this is just to see if everything is working 
      alert('Sendmail failed possibly php script: ' + errormessage); 
    } 
}); 

Также в файле PHP, вы, кажется, дважды использовала функцию почты.

+0

Af! Проблема в том, что «успех» НИКОГДА не возникает! Я НИКОГДА не видел div, называемый «отправленный по электронной почте», Спасибо за ... »текст :(Вот и все. Все работает отлично, все данные захватываются, создается ссылка, файл sendmail.php находится в нужном месте (честно говоря, я даже скопировал его почти везде) и ничего! – anonymous

+0

@ anonymous присоединить эту функцию ошибки и посмотреть, отображается ли она. Если она отображает ее, вероятно, ваш php-скрипт, который имеет проблему. однако, если это так, то это означает, что ajax был успешным – kjy112

+0

@ anonymous добавлено предупреждение для успеха или неудачи, чтобы вы знали, если ваш аякс не работает или ваш скрипт php. удачи – kjy112

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