使用ajax提交表单,但重定向到另一个页面

时间:2012-01-07 08:51:47

标签: javascript jquery jquery-plugins

如果我想在表单上提交(a)执行某个php文件(url -a),我应该在html和jquery中使用什么? (b)重定向到另一个。(url-b)

我目前实现了jquery表单插件。 http://jquery.malsup.com/form/#getting-started

像这样:

步骤a。包括jquery和表单插件脚本;

步骤b。在html中,在表单元素中:

      <form action="url-a.php">
          <!--form code inserted here including input elements, etc and submit-->
      </form>
步骤c。在js中,在document ready内:

      $('#form').ajaxForm(function() { 
           $.post("url-a.php", {a: a, b: b});
      }); 

是否应更改其中一个网址链接?假设url-a是ajax应该处理的那个,我想重定向到url-b ..

谢谢!

3 个答案:

答案 0 :(得分:3)

$('#form').ajaxForm(function() { 
  $.post("url-a.php", {a: a, b: b});
  window.location.href="/url-b.php";
});

答案 1 :(得分:1)

如果您希望页面重定向,那么为什么要让它提交ajaxly成功处理程序中的任何内容,您可以重定向到页面

 $.post("url-a.php", {a: a, b: b},function(){
   window.location.href="/page/to/redirect.php";
 });

答案 2 :(得分:0)

$.post(..)的“完整”功能中,您应该更改浏览器的位置。您不能将服务器端重定向与ajax一起使用。

 $.post("url-a.php", {a: a, b: b},function(){
      window.location.href="/url-b.php";
 });

如果你想在ajax完成之前重定向,那很可能,但很难。例如,我不知道如何在PHP中执行此操作。问题是,如果你立即重定向(再次应该通过javascript完成),那么请求将从客户端中止。如果请求被中止,服务器也会中止它。有时可以在服务器上启动一个与请求线程分开的新线程,但如果请求在完全到达服务器之前中止,它将全部失败。

一般来说,你不应该这样做 - 这是一种错误的做法。要么不重定向,要么不在上一页上启动ajax请求 - 只要新页面加载就启动它。

更新:我看到你需要你的ajax请求运行一个小时 - 这不会发生 - 浏览器将超时。确认确实需要一个小时后,check this用于异步php任务。您可以从第2页的$(document).ready(function() {..});

开始