Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何发送ajax请求并重定向到另一个页面_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何发送ajax请求并重定向到另一个页面

Javascript 如何发送ajax请求并重定向到另一个页面,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在客户端代码中看到了以下序列: $.ajax({ url: "...", data: {}, success: function() { // I don't care about the response } }); top.location.href="http://...." 正如您所见,浏览器发送ajax请求,而不关心响应。 发送请求后,页面将使用top.location.href语句重定向到另一个url 我是javascript的新手,我

我在客户端代码中看到了以下序列:

$.ajax({
    url: "...",
    data: {},
    success: function() {
    // I don't care about the response
    }
});

top.location.href="http://...." 
正如您所见,浏览器发送ajax请求,而不关心响应。 发送请求后,页面将使用
top.location.href
语句重定向到另一个url

我是javascript的新手,我不确定ajax请求是否保证发送

有没有其他方法可以实现这种发送、忘记和重定向ajax行为

编辑


只是澄清一下,我不想等待这个ajax完成它的长操作并将重定向行放入成功回调中

如果您想100%确定消息已被接收和处理,您应该在
success
处理程序中执行重定向


如果需要的话,这还可以让您进行错误处理——例如,如果您发出AJAX请求但由于某种原因失败了该怎么办?如果只是重定向,用户永远不会知道有问题。但是,根据应用程序的具体情况,您可能不需要关心这一点。

如果您想100%确定消息已被接收和处理,您应该在
成功
处理程序中执行重定向


如果需要的话,这还可以让您进行错误处理——例如,如果您发出AJAX请求但由于某种原因失败了该怎么办?如果只是重定向,用户永远不会知道有问题。但是,根据应用程序的具体情况,您可能不需要关心这个问题。

如果您只想在ajax请求成功后重定向到其他页面,那么为什么不将top.location放在success函数中,或者无论ajax成功与否,您只想重定向…将top.location写在完整参数的函数。

如果您只想在ajax请求成功后重定向到其他页面,那么为什么不将top.location放在success函数中,或者如果您只想重定向,而不管ajax成功与否……将top.location写在完整参数的函数中。

我说的是客户机另一方面,是否ajax功能会在浏览器上排队,并且top.location.href会在它之前运行?这就是为什么,如果您不希望它在您的ajax请求之前运行,请将其放入成功或ajax的完整参数中。查看此页我指的是客户端,是否ajax功能将在浏览器上排队,并且top.location.href将在它之前运行?这就是为什么,如果您不希望它在您的ajax请求之前运行,请将其放入成功或ajax的完整参数中。检查此页面,问题是,如果您在请求到达服务器之前重定向,那么它可能会丢失。因此,我建议至少发出AJAX请求,然后使用
setTimeout
等待一秒钟左右再重定向。但这很容易出错,因为您仍然依赖于时间——如果您的请求需要更长的时间才能返回到服务器呢?更好的方法是修改服务器处理程序,使其立即返回,并将要在服务器上运行的作业排队,以完成长期运行的任务。然后您仍然可以在客户端上使用
success
处理程序。这有帮助吗?+1听起来这是最合理的做法,我在寻找一个简短的答案,比如“它会起作用”。某处我知道我不会得到它:)谢谢!!!问题是,如果在请求到达服务器之前重定向,那么它可能会丢失。因此,我建议至少发出AJAX请求,然后使用
setTimeout
等待一秒钟左右再重定向。但这很容易出错,因为您仍然依赖于时间——如果您的请求需要更长的时间才能返回到服务器呢?更好的方法是修改服务器处理程序,使其立即返回,并将要在服务器上运行的作业排队,以完成长期运行的任务。然后您仍然可以在客户端上使用
success
处理程序。这有帮助吗?+1听起来这是最合理的做法,我在寻找一个简短的答案,比如“它会起作用”。某处我知道我不会得到它:)谢谢!!!