【问题标题】:Javascript "window.location" stopping PHP redirectJavascript“window.location”停止PHP重定向
【发布时间】:2013-06-09 16:07:12
【问题描述】:

基本上有一个调用函数和一个计时器。计时器通过 Javascript 倒计时直观地显示,同时有一个 PHP 重定向,它已设置为与 Javascript 倒计时相同的长度。但是,window.location callto 函数正在阻止 PHP 标头重定向工作。谁能告诉我为什么?

Javascript window.location 函数(位于 body 之后,因为它阻止了它下面的代码被处理:

<?
echo"
<script type='text/javascript'>
    window.location='callto:".$to."';
</script>";
?>

PHP 标头重定向(在 html 标记上方):

<?php

header( "refresh:5;url=wherever.php" );

?>

如果我删除了 window.location 函数,重定向就会起作用。

【问题讨论】:

  • 我想你很困惑。您希望页面重定向到 where.php 还是 callto: ?如果两者都在(比如说)5 秒后发生,那么这是一场关于谁先到达那里的竞赛;只包括你想要的。另外,您为javascript“函数”提供的示例不是函数,而是立即重定向。您将其描述为在计时器倒计时后调用,但实际上它只是立即更改位置的指令。你要哪个?
  • 这是用于触摸屏接待,客户选择要呼叫的部门。我不确定实际呼叫系统的设置,但 window.location='callto:...' 不会转到其他页面,它只是连接到创建呼叫所选部门的呼叫系统。它将保持在同一页面上。但是,这会导致 PHP 重定向不起作用 - 需要重定向以阻止它卡在“通话中”屏幕上。我希望这能解决问题

标签: php javascript


【解决方案1】:

你应该只用javascript重定向,不要用php重定向。为什么要在已经使用 javascript 进行 php 重定向时进行重定向?

为了延迟重定向,您应该使用Javascript setTimetout() 函数,例如:

setTimeout(function () {document.location = 'detination';}, time_in_miliseconds);

【讨论】:

    【解决方案2】:
     header( "refresh:5;url=wherever.php" );
    

    这不是一个有效的重定向标头!

    header('Location: http://example.com/sub/script.php');
    

    这是一个有效的重定向标头!

    要让脚本按你的意愿等待,你需要在它上面添加一个睡眠:

    sleep(5);
    header('Location: http://example.com/sub/script.php');
    

    【讨论】:

    • 不幸的是,这不包括它的时间方面。
    • 是的,因为当标头到达客户端时,标头重定向就完成了 - 标头重定向没有时间安排。为了定时重定向,提供一个带有元重定向的 HTML 页面...
    • 是的,你关于超时的观点是公平的,但你应该更正这个问题,因为很多人可能会看到这个问题并认为它是正确的
    【解决方案3】:

    您应该使用简单的 html 和 href="callto:..." 呈现调用链接,而不是 javascript 重定向。 如果您想在没有用户交互的情况下显示呼叫屏幕,您只需触发链接上的点击事件。

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 2018-03-15
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      相关资源
      最近更新 更多