【问题标题】:Javascript redirection is not workingJavascript 重定向不起作用
【发布时间】:2013-01-10 09:21:37
【问题描述】:

我正在创建我的应用程序的移动版本。这是设置页面 (mysettings.php) 的一部分。

 if(!isset($_SESSION['access_token']))
     {
        echo("<script  type='text/javascript'> window.top.location.href='http://www.example.com/mobile/login.php'</script>");
     }

如果 access_token 没有设置,那么它应该重定向到 login.php 但我不明白为什么它不起作用。

在渲染的源代码中我可以看到因为重定向没有发生是(重定向代码存在)

<script  type='text/javascript'> window.top.location='http://www.example.com/mobile/login.php'</script>
<!DOCTYPE html> 
<html> 
<head>...
.
.
.</html>

我正在使用 Chrome,这是我登录到 mysettings.php 页面的源代码

<?php
session_start();
$logins=0;
?>
<!DOCTYPE html> 
<html> 
<head> 
    <title>Page Title</title> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
</head> 
<body> 

<div data-role="page">

    <div data-role="header">
        <h1>Settings</h1>
    </div><!-- /header -->

    <div data-role="content">   
         <div class="ui-grid-a">
      <div class="ui-block-a"><a href="mysettings.php" data-role="button" data-mini="true">Settings</a> </div>
      <div class="ui-block-b"><a href="my.php" data-role="button" data-mini="true">My Pictures</a> </div>
    </div>

    </div><!-- /content -->

    <div data-role="footer">

    </div><!-- /footer -->
</div><!-- /page -->

</body>
</html>

【问题讨论】:

  • 为什么不在 PHP 中执行重定向?
  • @AnthonyForloney:我该怎么做?
  • @AnthonyForloney:如果你指的是标题,那也没有用。我得到“未定义”作为源代码中的消息`
    警告:无法修改标头信息 - 标头已发送(输出开始于 /home/earnfame/public_html/mobile/mysettings. php:7) 在 /home/xxx/public_html/mobile/mysettings.php10
    ` 我正在尝试从 php 页面访问它是基于移动的。这会导致任何问题吗?

标签: javascript android html redirect http-redirect


【解决方案1】:

您可以使用header PHP 函数执行重定向:

<?php
    if(!isset($_SESSION['access_token'])) {
        header("Location: http://www.example.com/mobile/login.php");
        exit;
    }
?>

请注意,这需要在发送任何 HTML 标记之前执行

【讨论】:

  • 还是不行。 `
    警告:无法修改标头信息 - 标头已由 /home/xxx 中的(输出开始于 /home/earnfame/public_html/mobile/mysettings.php:7)发送/public_html/mobile/mysettings.php10
    `
  • @AdiMathur 它必须在任何其他输出之前发送
  • 我在打开 HTML 标签之前将它放在 PHP 中。在窗口上我得到Undefined 和上面的源代码中的错误。请帮忙。
  • @AdiMathur 错误表明脚本 mysettings.php 在第 7 行输出了一些东西
  • 第 7 行有一个结束标签和开始标签 "?>
【解决方案2】:

也许尝试使用 php header("Location: http://some/url"); 或者也尝试使用window.location.href instaed of top 最后尝试将脚本而不是文档标记放在它之前(可能有用吗?...)

【讨论】:

  • 仍然无法正常工作...我尝试了 header 和 window.location.href
  • 嗯,很确定你的问题在其他地方......如果这些都不起作用,你要么有一个基本的 JS 错误,要么 JS 没有启用,或者 PHP 没有正确输出,检查你的 PHP错误日志,以及您的 js 控制台错误
【解决方案3】:

我添加了

data-ajax="false" 

mysettings.php 上的按钮,它开始正常工作。谢谢你

【讨论】:

  • 理想情况下,您应该接受/赞成正确答案,而不是添加您自己的答案
猜你喜欢
  • 1970-01-01
  • 2014-01-19
  • 2023-03-14
  • 2014-01-09
  • 2017-10-06
  • 2014-09-29
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
相关资源
最近更新 更多