gpt4 book ai didi

php - 当 codeigniter/tank auth session 超时时处理 ajax 调用中的 php 重定向

转载 作者:行者123 更新时间:2023-11-28 02:43:04 25 4
gpt4 key购买 nike

嘿,我在 codeigniter View 中有一个 javascript 函数,该函数从 codeigniter Controller 函数中检索一些信息,当达到用户 session 超时时,该函数会表现得很奇怪。在被调用的 php 函数中,我有一个如下所示的语句:

  if (!$this->tank_auth->is_logged_in()) {
redirect(site_url('login'));}

如果他们没有登录,这会将他们重定向到我的登录页面。但是在 javascript 函数中,我获取响应文本并将 div 的内容设置为等于它。

  xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "mycontroller/myfunction/", false);
xmlhttp.send();
document.getElementById("mydiv").innerHTML=xmlhttp.responseText;

如果用户在调用此函数时注销,它将返回登录页面的responseText并将其插入div中,而不是重定向到登录页面。这看起来很糟糕。如果用户 session 在查看此页面时超时,如何阻止它执行此操作?我无法更改超时限制,因为其他应用程序依赖它。

实际上,这根本不是 codeigniter 或 Tank_auth 问题,只是如何从 ajax 请求中调用的 php 函数重定向,而不是当我最初使用该函数为 responseText 生成字符串时。

最佳答案

您需要解析响应并确定它是否是您期望的响应类型。如果您期望字符数低于一定数量,则可以检查长度,但这可能不如检查特定 dom 对象或字符串那么可靠。

例如,您可以这样做:

if(xmlhttp.responseText.length < 200) {
document.getElementById("mydiv").innerHTML=xmlhttp.responseText;
} else {
window.location.href = 'some url';
}

另一种选择是使用 CodeIgniter 的 AJAX 响应检查来执行其他操作,而不是加载 View (或加载不同的 View ):

if ($this->input->is_ajax_request())
{
// do something else
}
else
{
// do what you were doing before
}

希望这有帮助!我会回避使用 PHP/CI 方法,因为听起来你会在代码中的任何地方添加异常,这不太好。不过,这完全取决于您。

关于php - 当 codeigniter/tank auth session 超时时处理 ajax 调用中的 php 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com