【问题标题】:call JQuery ajax at intervals doesn't redirect page每隔一段时间调用 JQuery ajax 不会重定向页面
【发布时间】:2014-06-02 23:59:41
【问题描述】:

我有一个 php 脚本,它检查会话值是否与 db 值匹配,如果不匹配,则用户退出并转到主页。目前,当通过打开每个页面(它作为包含添加)触发脚本时,这工作正常,但我试图使用带有 ajax 的 jQuery setInterval 函数调用它

jQuery

setInterval(function() {
    $.ajax({
        type: "POST",
        url:"includes/multi_check.php"
    }); 
}, 5000); //5 seconds

php

$id = $_SESSION['user_id'];
$sql = "SELECT * FROM user WHERE userID = '$id'";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
$row = mysqli_fetch_array($result);
$db_token = $row['session_token'];
$taken = $row['taken_over'];

if($_SESSION['session'] != $db_token){
    $_SESSION['taken_over_by'] = $taken;
    header("location:http://www.x-rayqa.co.uk/index.php");
}

在控制台中监视调用时,调用正在工作,如果我在 if 参数中回显一个值,则在条件为真时显示正确的值,但我无法使页面重定向。它完全忽略了标头重定向。

另外,当使用手动触发的方法重定向用户时,运行 jQuery 函数的会话不会传递到主页,只要我注释掉 jQuery 方法,手动方法就会按预期工作

【问题讨论】:

  • 你能检查一下你的ajax调用返回了什么吗?也许会成功:function(data) { console.log(data); } 在你的 ajax 调用中......确保一切都从你的 php 页面返回就好了
  • 可能缓存了 jQuery 响应?检查您的网络流量

标签: javascript php jquery ajax


【解决方案1】:

AJAX 正在后台执行,但后台发生的事情不会影响实际的应用程序。如果你想影响客户端,你需要ajax发送数据给客户端,然后让客户端的浏览器做出适当的反应。比如:

setInterval(function() {
    $.ajax({
        type: "POST",
        url:"includes/multi_check.php",
        success:function(d){
            if(d=="0"){
                window.location="http://www.x-rayqa.co.uk/index.php";
            }
        }
    }); 
}, 5000); //5 seconds

然后在你的 PHP 文件中,执行如下操作:

if($_SESSION['session'] != $db_token){
    $_SESSION['taken_over_by'] = $taken;
    exit("0");
}
exit("1");

所以基本上所有这一切都是通过 ajax 将号码 10 发送回用户,如果用户收到 0,他们将被重定向到主页。这可能有效,也可能无效,但这是您需要遵循的想法才能使 AJAX 正常工作。

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2023-03-25
    相关资源
    最近更新 更多