Хорошо, чтобы сделать длинный рассказ коротким:
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; });
Вы должны использовать Ajax. Это намного проще. Ниже приведен простой учебник по отправке почты с использованием PHP, Ajax и jQuery:
Отправлять почту с помощью PHP, Ajax и 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 вы, похоже, дважды использовали функцию почты.