Javascript 使用ajax提交表单,但重定向到其他页面
如果我想在表单提交时(a)执行某个php文件(url-a),我应该在html和jquery中使用什么;(b) 重定向到另一个。(url-b) 我目前实现了jquery表单插件。 像这样: 步骤a。包括jquery和表单插件脚本 步骤b。在html中,在form元素中:Javascript 使用ajax提交表单,但重定向到其他页面,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,如果我想在表单提交时(a)执行某个php文件(url-a),我应该在html和jquery中使用什么;(b) 重定向到另一个。(url-b) 我目前实现了jquery表单插件。 像这样: 步骤a。包括jquery和表单插件脚本 步骤b。在html中,在form元素中: <form action="url-a.php"> <!--form code inserted here including input elements, etc and s
<form action="url-a.php">
<!--form code inserted here including input elements, etc and submit-->
</form>
是否应该更改其中一个url链接?假设url-a是ajax应该处理的,我想重定向到url-b
谢谢大家! 如果希望页面重定向,那么为什么希望它提交
ajaxly
在成功处理程序中如何重定向到页面
$.post("url-a.php", {a: a, b: b},function(){
window.location.href="/page/to/redirect.php";
});
在$.post(..)
的“完成”功能中,您应该更改浏览器的位置。不能在ajax中使用服务器端重定向
$.post("url-a.php", {a: a, b: b},function(){
window.location.href="/url-b.php";
});
如果您想在ajax完成之前重定向,这是可能的,但很难。例如,我不知道如何在PHP中实现它。问题是,如果您立即重定向(同样应该通过javascript进行重定向),那么请求将从客户端中止。如果请求被中止,服务器也会中止它。有时,可以在服务器上启动一个与请求线程分离的新线程,但是如果请求在完全到达服务器之前被中止,那么它将全部失败
一般来说,你不应该这样做——这是一种错误的方法。不要重定向,或者不要在上一页上启动ajax请求—在加载新页面后立即启动它
更新:我看到您需要您的ajax请求运行一个小时-这不会发生-浏览器将超时。在确认异步php任务确实需要一小时后。您可以从
$(document).ready(function(){..})启动它因为这是我的应用程序所需要的,所以我需要在ajax返回之前进行重定向。所以这个解决方案行不通。(ajax预计会超过几秒钟)您为什么要重定向然后提交表单,因为您必须序列化表单并将其转到下一页,然后提交,但这不是解决方法,如果表单提交由于许多原因而失败,我不一定要先重定向或先提交,它们对我来说都是一样的,关键是我不想等待submit的ajax功能的成功。这是因为php文件处理提交结果的过程非常复杂,可能需要几分钟到几个小时。所以我希望用户不要为此烦恼。他确实提交了,然后去了其他地方,不管这个php页面在后台做什么,都不应该是当前浏览器关心的问题。好的,我试试第二种方法。那我该怎么做呢?使用serialize
?我希望重定向立即发生,ajax只需保持运行并执行一段时间…好的,我正在尝试您提到的最后一种方法-在加载新页面后立即启动ajax。但它不起作用。。。我应该把jqury贴在哪里?在什么下面?只是在装货吗?我应该如何传递变量?我使用post,然后再次将它们传递给js,但这似乎是多余的。。。谢谢我问了一个关于它的新问题-请看这里:
$('#form').ajaxForm(function() {
$.post("url-a.php", {a: a, b: b});
window.location.href="/url-b.php";
});
$('#form').ajaxForm(function() {
$.post("url-a.php", {a: a, b: b});
window.location.href="/url-b.php";
});