0

我有以下代码,它在提交表单时有效(它保持在同一页面上)但我也希望在提交后刷新当前页面。

<script>
$('form').live('submit', function(){
  $.post($(this).attr('action'), $(this).serialize(), function(response){
  // Here I need a code to refresh the page. I tried with window.location.reload(); no      success...
  },'json');
  $('form').hide();
  return false;
});

感谢您的帮助

4

2 回答 2

0

“返回错误;” 在 jQuery 中的工作方式与在纯 jane javascript 中的工作方式不同。使用preventDefault

$('form').live('submit', function(e){
    $('form').hide();
    e.preventDefault();
});

另外,如果你能提供帮助,我不建议使用“live” ...如果你可以使用 $(document).ready 和 $('form').submit(function(e){... });

----编辑1:

我在您的页面上注意到(在您的评论中注明)您收到错误消息:“XMLHttpRequest cannot load http://emails.loquierocomprar.com.co/wp-content/plugins/mailpress/mp-includes/action.php。来源Access-Control-Allow-Origin 不允许http://www.loquierocomprar.com.co 。”

$.post 调用失败并且从不发送 ajax 发布请求。因此,成功处理程序永远不会被触发,并且最终不会调用 window.location.refresh 方法。

其次,您使用的是数据类型“json”——如果服务没有返回格式正确的 json,那么成功处理程序也不会正确触发。

于 2012-06-29T00:07:53.780 回答
0

您想要自然的 HTML 表单提交以及隐藏表单。

您不能在提交之前隐藏表单,否则浏览器将无法获取/发布其隐藏字段,因此您必须在提交后将其隐藏。最简单的方法是使用 setTimeout。

$(document).on('submit', 'form', function() {
  var $form = $(this);//remember $form in the closure
  setTimeout(function(){ $form.hide(); }, 0);//hide $form *after* submission
  return true;//allow natural html form submission to happen
});

即使将 setTimeout 延迟设置为零,$form.hide()在表单提交发生后(在原始提交线程中)也会从不同的事件线程执行。

于 2012-06-29T00:21:46.680 回答