【问题标题】:PHP and JavaScript redirect not workingPHP 和 JavaScript 重定向不起作用
【发布时间】:2014-09-29 17:44:10
【问题描述】:

我有以下代码:

<?php
    require_once 'assets/functions.php';
    if(isset($_SESSION['userName'])){
        header('Location:http://192.168.0.50/hub.php');
        die();
    }
    $title = 'ResRes - Login';
    printCSS($title);
?>

这是我的 index.php 文件的一部分。问题是加载后,window.location = result.locationheader('Location:http://192.168.0.50/hub.php') 都不起作用。这变得非常令人沮丧。

我的javascript代码是:

function verifyUser(userEmail){
    $.getJSON('verifyUser.php', {data : userEmail}
    ).done(function(result){
        window.location.href = result.location;
        alert(result.message);
        console.log(result);
        return false;
    });
};

我怀疑 .done(function(result){...}) 甚至没有执行,因为没有 console.log() 发生,也没有警报本身。不知道为什么会有这种行为。

另外,为了确保在我的 verifyUser.php 文件中我有以下标题:

header('Content-Type: application/json');

在测试服务器和 wamp 服务器上不会发生这种情况。它被重定向。但是,在此生产服务器中,它不会重定向。用户必须手动刷新要发送到result.location 的页面或 index.php 上的标题所说的内容。

任何想法可能会发生什么?

编辑 在控制台上手动执行$.getJSON,输出如下:

$.get('verifyUser.php', {data : 'hector.admin@laestanciaschool.com'}).done(function(result) { console.log("Done called", result); });
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}

【问题讨论】:

  • 您是否在控制台中收到 javascript 错误?尝试以 JSON(服务器端)返回 URL,然后在 javascript 中将窗口设置为该位置。
  • 如果它在三分之二的服务器上工作,我猜你的代码不是问题。应该是服务器配置问题。检查您的 php.ini 文件,也许这 3 个 PHP 实例之间存在一些差异。如果我是正确的一些需要设置的选项。

标签: javascript php redirect


【解决方案1】:

你可以换一个试试

window.location.href = result.location

window.open(result.location, "_self")

另外,您的 php.ini 文件中是否启用了会话?

【讨论】:

  • 您的答案无效。我怀疑.done(function()) 没有被执行。
  • @hsoto 你能console.log(result) 看看你得到了什么吗?
  • 不。我更新了我的答案以反映这一点。没有任何警报或 console.log()' ing。真的很奇怪。
  • @hsoto 只是好奇。你用的是什么 jQuery 版本?
  • 1.11.1,稳定版,用于生产版本。
【解决方案2】:

您可以使用浏览器的 js 调试器插入断点以查看问题所在。

使用chrome,按F12并单击Sources选项卡,然后找到您的源文件,通过左键单击代码行的左侧插入断点。

您还可以使用Network 选项卡检查浏览器和服务器之间的请求和响应

【讨论】:

  • 我按照你说的做了,显然,它跳过了.done() 部分。返回的数据是正确的。这一点没有问题。它按预期返回 JSON。
  • @hsoto 然后必须调用失败处理程序,添加.fail(function( jqxhr, textStatus, error ) { var err = textStatus + ", " + error; console.log( "Request Failed: " + err ); 并重试。 api.jquery.com/jquery.getjson
  • 会发生这种情况:Request Failed: parsererror, SyntaxError: Unexpected token h VM23763:10
  • 我已经阅读了很多次文档。我不是这方面的新手。我已经使用了很长一段时间了。这是我第一次遇到此类错误。
  • 我猜你服务器的 json 响应可能有 SyntaxError。捕获来自Network 的响应并验证Console 上的语法。
猜你喜欢
  • 2012-06-13
  • 2013-01-10
  • 1970-01-01
  • 2016-01-12
  • 2017-03-06
  • 1970-01-01
  • 2012-07-14
  • 2016-04-14
  • 2014-01-19
相关资源
最近更新 更多