将访问者重定向到另一个页面的最可靠方法是什么?

时间:2015-04-30 21:02:12

标签: javascript php html redirect

我有一个纯PHP页面,其目的是做很多事情(加载需要4-5秒),然后将用户重定向到另一个页面。

最近,我在PHP脚本开头之前添加了一些HTML(一个精确的加载gif),以便访问者知道页面正在做什么,希望不会关闭页面。

问题是现在我不能使用PHP的头函数重定向访问者,因为HTML代码在PHP可以发送之前发送头文件。

在我的情况下,我需要一种真正可靠的方式来重定向访问者。我希望它适用于任何设备(台式机,手机,平板电脑等)和任何浏览器。现在,我认为回显元刷新标签是实现这一目标的最佳方式。你觉得怎么样?

3 个答案:

答案 0 :(得分:2)

浏览器在读取元标记后可能不会等待请求完成,这可能会使您的脚本处于不一致状态。您可以通过添加javascript来破解这一点,该javascript在页面上查找仅在脚本完成后发送的标记,并从js重定向。但是你真正想做的是发送一个简短的响应,仅使用你的加载gif,并对服务器进行ajax调用以进行操作,并在获得成功响应后进行重定向。但是,您应该首先在原始页面上完成该操作。

答案 1 :(得分:1)

您可以使用javascript重定向用户。使用

window.location.href=""

class Node(object):
    def __init__(self):
        self.children = collections.defaultdict(lambda:self.__class__())
        self.stuff = ...
    def __str__(self,depth=0):
        if self.children:
            return str(self.stuff)+'\n'+'\n'.join([' '*depth+k+' ' + v.__str__(depth+1) for k,v in self.children.items()])
        else:
            return str(self.stuff)
    def get_path(self,path):
        node = self
        while path:
            node = node.children[path.pop(0)]
        ...

答案 2 :(得分:1)

  1. 在服务器端发送HTTP标头。
  2. Location: http://foobar.com

    1. 在客户端渲染元重定向。
    2. <meta http-equiv="refresh" content="5; url=http://foobar.com/">

      1. 在客户端呈现链接。
      2. <a href="http://foobar.com">Redirecting to http://foobar.com. or click here</a>

        这样,如果客户端浏览器不支持自动重定向的标准,那么他们机会性地有一个链接可以跟进。

        我不打算使用Javascript,因为如果它们不符合上述标准,那么此类捕获可能不会让任何人受到影响。

        这是非常标准的做法。

相关问题