在提交表单后执行脚本
我在这个网站上发现了一种在不离开页面的情况下提交POST
表单的方法。 在该脚本中,他们提供了有关如何在提交表单后进行function的说明。 这是脚本的样子:
$(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 。 请帮忙。 谢谢。
使用$ .post,“函数(响应)”仅在成功结果后调用,因此在服务器处理请求时,您在此函数内做错了。
要在将请求发送到服务器后继续处理,请在$ .post调用之后放置$(’form’)。hide():
$form.submit(function(){ $.post( $(this).attr('action'), $(this).serialize(), function(response){ } ,'json' ); $('form').hide(); return false; });
问题:
- 将JavaScript变量设置为
form
,而不是$form
。 然后在jQuery中使用它作为$(form)
。 -
$(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; }); });
当表单改为时,你的小提琴工作得很好
http://api.jquery.com/jQuery.post/上的文档显示这是一种有效的语法,并且http://www.johnnycode.com/blog/2010/04/08/jquery-form-serialize- dont-post-submit-and-button-values-duh /也是一个正在运行的样本。 如果它对你来说根本不起作用,那就像这样愚蠢,你在页面中引用了jQuery吗?