【发布时间】:2018-05-04 13:48:42
【问题描述】:
我有以下表单,它处理用户请求的密码恢复脚本。
<form class="forget-form" id="forget-form" action="datacenter/functions/passwordRecovery.php" method="POST">
<h3 class="font-green">Esqueceu sua senha?</h3>
<p> Digite seu e-mail abaixo para receber o procedimento para uma nova senha.</p>
<div class="form-group" style="margin-bottom:0px">
<input class="form-control placeholder-no-fix" type="email" autocomplete="off" placeholder="Seu e-mail" name="email" id="email" required/>
</div>
<div class="form-actions">
<button type="button" id="back-btn" class="btn red btn-outline uppercase"><i class="fa fa-chevron-circle-left"></i> voltar</button>
<button type="submit" class="btn btn-success uppercase pull-right uppercase"><i class="fa fa-paper-plane"></i> enviar</button>
</div>
</form>
为此,我使用 ajax 将用户保持在同一屏幕上,而无需任何重定向。
$("#forget-form").submit(function(e){
e.preventDefault();
var email = $("#email").val();
if(isEmail(email) == true){
$.ajax({
url: 'datacenter/functions/passwordRecovery.php',
type: 'POST',
data: new FormData(this),
async: true,
contentType: false,
processData: false,
success: function(data){
console.log(data);
},
error: function(error, errorThrown, errorShowcase){
console.log(data);
}
});
} else {
console.log('this is not an email');
}
});
文件passwordRecovery.php 仅echo "success"; 登录控制台,只是为了检查它是否真的工作,并且它正在工作,但是太快了,它登录控制台,然后将我重定向到passwordRecovery.php,不会阻止表单的默认操作。
你遇到过这种情况吗?
【问题讨论】:
-
在提交回调结束时尝试
return false -
你能发一个minimal reproducible example吗?我无法重现问题
-
您的开发者控制台有错误吗?您是否有任何其他具有相同 ID 的元素?如果你这样做
console.log(document.querySelectorAll("#forget-form").length);会发生什么? -
没有错误@CrazyTrain,这样做会返回 1
-
您的 php 文件中是否存在导致重定向的内容?
标签: javascript jquery ajax forms