я использую контактную форму ajax, которая исчезает и показывает сообщение с благодарностью. И я также получаю почту после отправки формы. Но в ней нет данных, которые вводятся в форму. Я думаю, что данные формы не переход к handler.php .. Любая помощь, пожалуйста?
ajax.js
$(function() {
var theForm = $("#memberform");
theForm.validate({
submitHandler: function(theForm) {
$('#loader', theForm).html('Please Wait...');
$.ajax({
type: "POST",
url: "handler.php",
data: $(theForm).serialize(),
timeout: 20000,
success: function(msg) { $(theForm).fadeOut((500, function(){
$(theForm).html("<h2>Thank you. We will contact you shortly.</h2>").fadeIn();
}));
},
error: $('.thanks').show()
});
return false;
}
});
});
обработчик.php
<?php
$to = '[email protected]';
$subject = 'Contact Form';
$name = $_POST['senderName'];
$phone = $_POST['senderNumber'];
$email = $_POST['senderEmail'];
$message = $_POST['senderComments'];
$MESSAGE_BODY = "Name: ".$name."<br>";
$MESSAGE_BODY .= "Contact No: ".$phone."<br>";
$MESSAGE_BODY .= "Email: ".$email."<br>";
$MESSAGE_BODY .= "Message: ".nl2br($message)."<br>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'From: Companyname' . "\r\n";
$headers .= 'Reply-To: something.com' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
//$headers .= 'Bcc: [email protected]' . "\r\n";
mail($to, $subject, $MESSAGE_BODY, $headers);
?
скрипты, которые я связал в теге head поверх тега body.
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.validate.min.js"></script>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript" src="met.js"></script>
и я отредактировал файл web.config с правилом перезаписи, чтобы скрыть расширения .php от домена...
<rewrite>
<rules>
<rule name="Hide .php ext">
<match ignoreCase="true" url="^(.*)"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
<add input="{REQUEST_FILENAME}.php" matchType="IsFile"/>
</conditions>
<action type="Rewrite" url="{R:0}.php"/>
</rule>
<rule name="Redirecting .php ext" stopProcessing="true">
<match url="^(.*).php"/>
<conditions logicalGrouping="MatchAny">
<add input="{URL}" pattern="(.*).php"/>
</conditions>
<action type="Redirect" url="{R:1}"/>
</rule>
</rules>
</rewrite>
$(theForm).serialize()
попробуйтеtheForm.serialize()
. Это уже объект jQuery, нет необходимости снова передавать его через jQuery. - person maiorano84   schedule 12.11.2016