Forms 表单仍在默认情况下提交
我使用jQuery将表单数据提交到表单操作中的文件中。但是,当我提交表单时,浏览器会重定向到操作(comment.php)。我不知道为什么会这样,因为Forms 表单仍在默认情况下提交,forms,jquery,preventdefault,Forms,Jquery,Preventdefault,我使用jQuery将表单数据提交到表单操作中的文件中。但是,当我提交表单时,浏览器会重定向到操作(comment.php)。我不知道为什么会这样,因为e.preventDefault()应该停止浏览器的重定向。理想情况下,我希望浏览器不重定向并保持在当前页面(index.php) jQuery: <script type='text/javascript'> $('document').ready(function(){ $('.commentContaine
e.preventDefault()
应该停止浏览器的重定向。理想情况下,我希望浏览器不重定向并保持在当前页面(index.php)
jQuery:
<script type='text/javascript'>
$('document').ready(function(){
$('.commentContainer').load('../writecomment.php');
$('.answerContainer').on('submit', 'form', function(e){
e.preventDefault();
var form = $(this).closest('form');
$.post($(form).attr('action'),
$(form).serialize(),
function() {
$('.commentContainer').load('../writecomment.php');
$('.commentBox').val('');
}
});
});
</script>
$('document').ready(函数(){
$('.commentContainer').load('../writecomment.php');
$('.answerContainer')。关于('submit','form',function(e){
e、 预防默认值();
var form=$(this).closest('form');
$.post($(form).attr('action'),
$(表单).serialize(),
函数(){
$('.commentContainer').load('../writecomment.php');
$('.commentBox').val('');
}
});
});
HTML格式:
<form method='POST' action='../comment.php'>
//form contents
</form>
//表格内容
我认为您的选择器和上的方法工作不正常。请尝试:$('form')。在('submit',函数(e){
上,您确定已将表单包装在带有类answerContainer
的元素中吗
然后确保不要使用$。post
使用$。ajax
:
而此
位于元素上的i中,例如表单
不是第一个选择器。应答容器
$('document').ready(function(){
$('.commentContainer').load('../writecomment.php');
$('.answerContainer').on('submit', 'form', function(event) {
event.preventDefault();
var $form = $(this);
$.ajax({
"url": $form.attr("action"),
"data": $form.serialize(),
"type": $form.attr("method"),
"response": function() {
$('.commentContainer').load('../writecomment.php');
$('.commentBox').val('');
}
});
});
});
在提交函数中添加return false;
。@Virendra我应该在哪里添加return false?在prevent default之后还是之前?@Virendra运气不好。仍然添加onsubmit=“return false;”
到您的表单。@Virendra页面没有重定向,但现在数据没有被放置在作为解决方案的数据库中。我不确定我的代码的哪一部分具体不起作用,但这是一个很好的答案。非常感谢您。但您至少有一个错误。var form=$(this.closest(“表单”).
应该是var form=$(this)
@user802370,即使您正在阻止默认的表单操作,这一行仍然会继续提交表单:$.post($(form).attr('action')),
。正如答案中所述,使用.ajax
而不是。post
才是真正解决问题的方法。@AndreasAL这不是原始问题的一部分,但当我使用代码时,commentBox值不清楚。我使用代码时也不清楚,但有没有猜测为什么会发生这种情况?我仔细检查了文本区域课堂上有评论吗