Я очень новичок, но мне удалось собрать форму обратной связи для моего сайта. Проблема у меня заключается в том, что форма отправляет 2 электронных письма, а не 1. Есть мысли о том, что вызывает это?
$('#myForm')
.on('valid.fndtn.abide', function () {
var name = $("input#name").val();
var email = $("input#email").val();
var message = $("textarea#message").val();
var dataString = 'name=' + name +
'&email=' + email +
'&message=' + message;
$.ajax({
type: "POST",
url: "/contact/mail.php",
data: dataString,
success: function() {
$('.contactform').html("<div id='thanks'></div>");
$('#thanks').html("<h2>Thanks!</h2>")
.append("<p>Dear "+ name +"!, We will get back to you as soon as we can.</p>")
.hide()
.fadeIn(1500);
},
}); //ajax call
return false;
});
PHP:
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$msg = "
Name: $name
Email: $email
Comments:
$message
";
$to = "[email protected]";
$subject = "Website";
$message = $msg;
$headers = "Website";
mail($to,$subject,$message,$headers);
?>
Очевидно, что Foundation 5 по-прежнему содержит старую функцию вызова из предыдущего выпуска «valid» против «valid.fndtn.abide», которая вызывает его двойной вызов. Мне удалось предотвратить двойные электронные письма, внеся следующие изменения:
$('#myForm')
.on('valid.fndtn.abide', function (e) {
if(e.namespace != 'abide.fndtn') {
return;
}
var name = $("input#name").val();
var email = $("input#email").val();
var message = $("textarea#message").val();
Других решений пока нет …