【发布时间】:2015-10-23 23:28:22
【问题描述】:
我有一个包含使用 PHP 发送电子邮件的表单的模式。我不希望在发送电子邮件时关闭 Modal,因此我尝试使用 AJAX 发送它而不刷新页面。但是,当我推送提交时,我无法阻止它关闭并且无法弄清楚问题是什么。电子邮件仍在发送,所以我认为这与 AJAX 有关。
<?php include 'email_form.php';?>
<?php echo $result; ?>
<form method="post">
<div class="form-group">
<label for="name">Name:</label>
<input type="text" name="name" id="name" class="form-control" placeholder="Your Name"
value="<?php echo $_SESSION['post-data']['name']; ?>" />
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" name="email" id="email" class="form-control" placeholder="Your Email"
value="<?php echo $_SESSION['post-data']['email']; ?>" />
</div>
<div class="form-group">
<label for="comment">Comment:</label>
<textarea class="form-control" id="comment" name="comment"><?php echo $_SESSION['post-data']['comment']; ?></textarea>
</div>
<div class="modal-footer text-center">
<input type="submit" name="submit" id="submit" class="btn" value="Submit"/>
</div>
</form>
PHP
<?php
$_SESSION['post-data'] = $_POST;
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$comment = strip_tags($_POST['comment']);
if ($_POST["submit"]) {
if (!$_POST['name']) {
$error="<br />Please enter your name";
}
if (!$_POST['email']) {
$error.="<br />Please enter your email address";
}
if (!$_POST['comment']) {
$error.="<br />Please enter a comment";
}
if ($_POST['email']!="" AND !filter_var($_POST['email'],
FILTER_VALIDATE_EMAIL)) {
$error.="<br />Please enter a valid email address";
}
if ($error) {
$result='<div class="alert alert-danger"><strong>There were error(s)
in your form:</strong>'.$error.'</div>';
} else {
if (mail("user@email.com", "Comment from website.com", "Name: ".
$_POST['name']."
Email: ".$_POST['email']."
Comment: ".$_POST['comment']))
{
$result='<div class="alert alert-success"><strong>Thank
you!</strong> I\'ll be in touch.</div>';
unset($_SESSION['post-data']['name']);
unset($_SESSION['post-data']['email']);
unset($_SESSION['post-data']['comment']);
session_destroy();
} else {
$result='<div class="alert alert-danger">Sorry, there was
an error sending your message. Please try again later.</div>';
}
}
}
?>
JavaScript
<script>
$(document).ready(function () {
$('#submit').click(function(event) {
$('.modal').on('hide.bs.modal', function(e) {
e.preventDefault();
});
var formData = {
'name' : $('input[id=name]').val(),
'email' : $('input[id=email]').val(),
'comment' : $('input[id=comment]').val(),
};
$.ajax({
type: "post",
url: "email_form.php",
data: formData,
success: function(msg){
alert("Email sent");
},
error: function(){
alert("Please try to resubmit");
}
});
});
});
</script>
我也试过了,但它也关闭了模态
<script>
$(document).ready(function () {
$('#submit').submit(function(event) {
event.preventDefault();
var formData = {
'name' : $('input[id=name]').val(),
'email' : $('input[id=email]').val(),
'comment' : $('input[id=comment]').val(),
};
$.ajax({
type: "post",
url: "email_form.php",
data: formData,
success: function(msg){
alert("Email sent");
},
error: function(){
alert("Please try to resubmit");
}
});
});
});
</script>
【问题讨论】:
标签: php jquery ajax forms bootstrap-modal