【发布时间】:2014-09-22 06:40:46
【问题描述】:
我正在尝试编写一个发送电子邮件的 AJAX 联系表单。我正在关注找到here 的教程。
我无法阻止我的浏览器导航到表单的 action 属性上指示的 url。
这是我的 javascript 代码:
$(function(){
var form = $('#ajaxMail');
var formSuccess = $('#successMail');
var formError = $('#errorMail');
$(form).submit(function(event){
event.preventDefault();
var formData = $(form).serialize();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData
})
.done(function(response){
$(successMail).removeClass('standbyMessage');
$(successMail).addClass('completedMessage');
$('#name').val('');
$('#email').val('');
$('#message').val('');
)}
.fail(function(response){
$(errorMail).removeClass('standbyMessage');
$(errorMail).addClass('completedMessage');
)};
}
});
HTML 代码
<form name="ajaxMail" id="ajaxMail" action="mailer.php" method="POST">
<input type="text" id="name" name="name" placeholder="<?php echo $plName; ?>" required>
<input type="text" id="email" name="email" placeholder="<?php echo $plEmail; ?>" required>
<textarea id="message" name="message" cols="63" rows="8" placeholder="<?php echo $plMessage; ?>" required></textarea>
<input type="submit" id="submitMail" value="<?php echo $plSend; ?>">
</form>
<div id="successMail" class="alert alert-success standbyMessage" role="alert"><strong>Correo electronico</strong> enviado correctamente.</div>
<div id="errorMail" class="alert alert-danger standbyMessage" role="alert"><strong>Correo electronico</strong> no pudo enviarse, intente de nuevo mas tarde</div>
【问题讨论】:
-
您也可以发布您的 HTML。您是否检查过控制台是否有任何错误?此外,
form将是一个 jQuery 对象,因此您不需要再次包装它 - 例如。您可以只使用form.serialize()而不是$(form).serialize(),尽管这不会导致此问题。 -
删除
event.preventDefault();后试试 -
您可以尝试将您的
event参数重命名为e,即function(e)和e.preventDefault()?我肯定是错的,但是使用完整的关键字作为参数名称让我感到不安。 -
啊,你有语法错误。到处都是不匹配的大括号和括号。开始使用浏览器的开发者控制台。
-
@FerSalas:done 和 fail 模块的右括号有语法错误,如建议的那样。
标签: javascript jquery ajax forms