提交表单后防止重定向

Rob*_*gno 23 html forms jquery redirect

我有一个HTML表单,用PHP提交电子邮件,当它提交时,它会重定向到该PHP页面.有没有办法防止这种重定向发生?我使用jQuery构建了一个动画,我想要发生而不是重定向.我试过返回false;但它不起作用.这是我的功能:

$(function() {
    $('.submit').click(function() {
        $('#registerform').submit();
        return false;
    }); 
});
Run Code Online (Sandbox Code Playgroud)

这是开场表格标签:

<form id="registerform" action="submit.php" method="post">
Run Code Online (Sandbox Code Playgroud)

并提交按钮:

<input type="submit" value="SUBMIT" class="submit" />
Run Code Online (Sandbox Code Playgroud)

Bru*_*ong 36

你应该用ajax发布它,这将阻止它改变页面,你仍然会得到回来的信息.

$(function() {
    $('form').submit(function() {
        $.ajax({
            type: 'POST',
            url: 'submit.php',
            data: { username: $(this).name.value, 
                    password: $(this).password.value }
        });
        return false;
    }); 
})
Run Code Online (Sandbox Code Playgroud)

请参阅JQuery的Post文档

  • 我从未编码过 AJAX。是否可以发布一个与我的代码直接相关的示例? (2认同)

boz*_*doz 12

您可以尝试event.preventDefault();而不是返回false.像这样:

$(function() {
$('#registerform').submit(function(event) {
    event.preventDefault();
    $(this).submit();
    }); 
});
Run Code Online (Sandbox Code Playgroud)

  • preventDefault()只会阻止浏览器提交表单.提问者确实想要在PHP页面中调用表单处理代码(以便它发送电子邮件). (3认同)
  • 我尝试了这个,虽然页面没有重定向,但它没有发送电子邮件. (2认同)

mwo*_*ton 5

如果您希望PHP页面处理表单中的信息,那么您必须调用该PHP页面.要避免在此过程中重定向或刷新,请通过AJAX提交表单信息.也许使用jQuery对话框来显示结果或自定义动画.


Der*_*air 5

使用Ajax

使用jQuery Ajax请求方法,您可以将电子邮件数据发布到脚本(submit.php).在success执行脚本后使用回调选项为元素设置动画.

注意 - 我建议使用ajax响应对象来确保脚本成功执行.

$(function() {
    $('.submit').click(function() {
        $.ajax({
            type: 'POST',
            url: 'submit.php',
            data: 'password=p4ssw0rt',
            error: function()
            {
               alert("Request Failed");
            },
            success: function(response)
            {  
               //EXECUTE ANIMATION HERE
            } // this was missing
        });
        return false;
    }); 
})
Run Code Online (Sandbox Code Playgroud)


Mat*_*ore 5

$('#registerform').submit(function(e) {
   e.preventDefault();
   $.ajax({
        type: 'POST',
        url: 'submit.php',
        data: $(this).serialize(),
        beforeSend: //do something
        complete: //do something
        success: //do something for example if the request response is success play your animation...
   });

})
Run Code Online (Sandbox Code Playgroud)


Lac*_*zar 0

也许您只需要对您的页面执行 Ajax 请求。在那里做的return false事情并不是你认为它正在做的事情。