无法使简单的 php - Ajax 工作
Can't make a simple php - Ajax working
我想使用 Jquery 通过 ajax 调用和 PHP 构建一个简单的联系表。
但它不起作用,我不明白为什么。你可以认为没有id或者class名字的错误。
我的Javascript
jQuery('#contacter').click(function () {
var postdata = $('.contact-form form').serialize();
$.ajax({
type: 'POST',
url: 'contact.php',
data: postdata,
success: function () {
$('.contact-form form').fadeOut('fast', function () {
$('.contact-form').append('<p>Thanks for contacting us! We will get back to you very soon.</p>');
});
}
});
});
我的PHP
<?php
// Enter the email where you want to receive the message
$emailTo = 'example@gmail.com';
$clientEmail = addslashes(trim($_POST['email']));
$subject = addslashes(trim($_POST['subject']));
$message = addslashes(trim($_POST['message']));
$antispam = addslashes(trim($_POST['antispam']));
$headers = "From: " . $clientEmail . " <" . $clientEmail . ">" . "\r\n" . "Reply-To: " . $clientEmail;
mail($emailTo, $subject , $message, $headers);
?>
我的网站刷新后没有发送邮件。我已经用一个简单的 mail() 测试了我的服务器,它工作正常:服务器端没有问题。
在我看来,问题是提交表单时发生回发。当您在按钮 (假设) 上使用 click
事件时,它的默认行为是提交表单,这会导致回发。
由于您正在使用 ajax 向后端提交值,因此您需要使用 event.preventDefault()
来停止 表单 submission/default 行为 。
您必须通过 event.preventDefault()
停止活动:
jQuery('#contacter').click(function (e) { // <-----pass e for event here
e.preventDefault(); // and stop it here
如果您正在使用 form
元素,那么最好使用 submit
事件:
jQuery('.contact-form form').submit(function(e) { // e in the args
e.preventDefault(); // stop the submission here.
var postdata = $(this).serialize();
$.ajax({
type: 'POST',
url: 'contact.php',
data: postdata,
success: function() {
$('.contact-form form').fadeOut('fast', function() {
$('.contact-form').append('<p>Thanks for contacting us! We will get back to you very soon.</p>');
});
}
});
});
我想使用 Jquery 通过 ajax 调用和 PHP 构建一个简单的联系表。 但它不起作用,我不明白为什么。你可以认为没有id或者class名字的错误。
我的Javascript
jQuery('#contacter').click(function () {
var postdata = $('.contact-form form').serialize();
$.ajax({
type: 'POST',
url: 'contact.php',
data: postdata,
success: function () {
$('.contact-form form').fadeOut('fast', function () {
$('.contact-form').append('<p>Thanks for contacting us! We will get back to you very soon.</p>');
});
}
});
});
我的PHP
<?php
// Enter the email where you want to receive the message
$emailTo = 'example@gmail.com';
$clientEmail = addslashes(trim($_POST['email']));
$subject = addslashes(trim($_POST['subject']));
$message = addslashes(trim($_POST['message']));
$antispam = addslashes(trim($_POST['antispam']));
$headers = "From: " . $clientEmail . " <" . $clientEmail . ">" . "\r\n" . "Reply-To: " . $clientEmail;
mail($emailTo, $subject , $message, $headers);
?>
我的网站刷新后没有发送邮件。我已经用一个简单的 mail() 测试了我的服务器,它工作正常:服务器端没有问题。
在我看来,问题是提交表单时发生回发。当您在按钮 (假设) 上使用 click
事件时,它的默认行为是提交表单,这会导致回发。
由于您正在使用 ajax 向后端提交值,因此您需要使用 event.preventDefault()
来停止 表单 submission/default 行为 。
您必须通过 event.preventDefault()
停止活动:
jQuery('#contacter').click(function (e) { // <-----pass e for event here
e.preventDefault(); // and stop it here
如果您正在使用 form
元素,那么最好使用 submit
事件:
jQuery('.contact-form form').submit(function(e) { // e in the args
e.preventDefault(); // stop the submission here.
var postdata = $(this).serialize();
$.ajax({
type: 'POST',
url: 'contact.php',
data: postdata,
success: function() {
$('.contact-form form').fadeOut('fast', function() {
$('.contact-form').append('<p>Thanks for contacting us! We will get back to you very soon.</p>');
});
}
});
});