表单提交后执行一个脚本(Executing a script after a form has be

2019-10-29 07:19发布

我发现,在这个网站的方式提交POST形式,而不必离开页面。 在该脚本,他们把表单的提交后如何拥有的功能进行说明。 这里的脚本是什么样子:

$(document).ready(function(){
$form = $('form');
$form.submit(function(){
  $.post($(this).attr('action'), $(this).serialize(), function(response){
  },'json');
  return false;
});
});​

他们说,之间function(response){},'json'); 您可以指定其他JavaScript表单的提交后发生类似的警报等。 我试过了

$(document).ready(function(){
$form = $('form');
$form.submit(function(){
  $.post($(this).attr('action'), $(this).serialize(), function(response){
$('form').hide();
  },'json');
  return false;
});
});

不幸的是,这是不行的,任何人可以告诉我为什么? 我已经设置了的jsfiddle 。 请帮忙。 谢谢。

Answer 1:

使用$。员额中,“功能(响应)”只能称为一个成功的结果后,所以你一直在误导这个函数中做工作,而服务器处理请求。

为了将请求发送到服务器后继续进行处理,将$(“形式”)的.post的$调用后隐藏():

$form.submit(function(){
  $.post(
    $(this).attr('action'), $(this).serialize(), 
    function(response){
    }
    ,'json'
  );
  $('form').hide();
  return false;
});


Answer 2:

问题:

  1. 设置Javascript变量form ,而不是$form 。 然后用它作为jQuery的$(form)
  2. 的情况下$(this).attr('action')$.post()的回调,而不是形式。 解决方法: $(form) ,而不是$(this)

解:

$(document).ready(function(){
    form = $('form');

    $(form).on('submit', function() {
        $.post($(form).attr('action'), $(this).serialize(), function(response) {
            $('form').hide();
        },'json');

        return false;
    });
});


Answer 3:

当形式改变为你拨弄工作得很好

<form action="#" method="post">

并在文档http://api.jquery.com/jQuery.post/表明,这是一个有效的语法和http://www.johnnycode.com/blog/2010/04/08/jquery-form-serialize-犯规-后提交和按钮值,咄/也是一个正在运行的样品。 如果它不工作对你的话,因为傻,因为这是,你在你的页面的jQuery的参考?



文章来源: Executing a script after a form has been submitted