我是一名初学者,正在尝试创建 HTML 网页。我正在使用免费的在线模板并尝试创建联系页面。联系人调用 PHP 脚本来发送捕获字段的电子邮件。当我以纯 php 形式发送电子邮件而不使用 javascript 或 ajax 时,我可以让它工作。但是,当我尝试将 javascript 与 ajax 代码一起使用时,网络表单的内容不会被传递。这里提出了两个几乎相同的问题,但我发现 javascript 对于初学者来说理解起来很复杂。 js 中的细微差异导致尝试解决数小时但没有成功。
js deleting submitted form data
PHP form post data not being received due to jQuery
HTML 代码是
<div class="col-md-4 col-sm-12">
<div class="contact-form bottom">
<h2>Send a message</h2>
<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="form-group">
<input type="text" name="name" class="form-control" required="required" placeholder="Name">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" required="required" placeholder="Email Id">
</div>
<div class="form-group">
<textarea name="message" id="message" required class="form-control" rows="8" placeholder="Your text here"></textarea>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-submit" value="Submit">
</div>
</form>
</div>
PHP 脚本名为 sendemail.php
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Thank you for contact us. As early as possible we will contact you '
);
$name = @trim(stripslashes($_POST['name']));
$email = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = 'email@email.com';
$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
javascript如下
// Contact form
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $.post(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contacting us. We will reply as soon as possible.</p>').delay(3000).fadeOut();
});
});
有两个问题,第一个是使用 javascript 代码时表单数据未通过。第二个是它显示消息两次并发送两封电子邮件。我认为第二个问题与php脚本再次调用该函数有关。
非常感谢帮助和指导,我是一个初学者,只是尝试一个小挑战。
最佳答案
邮件表单似乎被故意禁用。我花了一段时间才修复它。 下面的代码将使它工作。我希望这会有所帮助。
// Contact form
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
type : "POST",
cache : false,
url : $(this).attr('action'),
data : $(this).serialize(),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contacting us. We will reply as soon as possible.</p>').delay(3000).fadeOut();
});
});
关于javascript - js 不传递 php 邮件的表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045950/