【问题标题】:ajax logout redirectajax注销重定向
【发布时间】:2012-08-28 20:31:33
【问题描述】:
public static function logout(){
        DB::query("DELETE FROM webchat_users WHERE name = '".DB::esc($_SESSION['user']['name'])."'");


        $_SESSION = array();
        unset($_SESSION);

        return array('status' => 1);
        window.location.replace("http://domain.com/index.php");

    }

这是我用来注销聊天窗口的代码,它使用 AJAX 运行。我只是想知道是否有一种方法可以在按下按钮时进行重定向。这是在.click 上运行的过程。我目前已经尝试过window.location.,但这似乎并没有奏效。

我该怎么做?

【问题讨论】:

  • 你不应该session_destroy() 什么的吗?
  • 我认为您在这里混合了 PHP 和 JavaScript 代码。
  • 一定错过了 PHP 手册中关于 window.location.replace() 的部分 :)
  • 我知道它在 php 中是 header (location.. :')
  • 由于这是一个 AJAX 请求,您需要 JavaScript 来重定向浏览器。如果你从 PHP 重定向,它只会重定向 AJAX 调用,而不是浏览器。

标签: php ajax


【解决方案1】:

如果是 Ajax 调用,则无法重定向用户。如果您使用header('Location: ...'),您将重定向 Ajax 请求,这对用户没有影响。

您可以:

  1. 将用户重定向到注销页面,而不是发送 Ajax 请求并使用header('Location: ...') 将他发送回您的主页
  2. 使用 ajax 调用,但 window.location 必须在 ajax 调用之后 的 javascript par 中完成。以onSuccess 事件为例

【讨论】:

  • case 'logout': header('Location: http://domain.com/index.php'); break; ..它不重定向:/
  • @Rsmithy 你的 PHP 中有这个吗?
  • @Rsmithy 我的回答明确指出您不能从 Ajax 调用重定向用户。为什么Ajax调用完成后不在Javascript中做重定向?
  • 它在处理程序上.. 运行的函数在一个单独的 php 文件中
猜你喜欢
  • 2018-12-17
  • 1970-01-01
  • 2017-06-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多