我无论如何也想不通为什么会发生这种事。
这是一种转发(已提交给 stackoverflow,但可能是服务器问题?)。
我正在运行一个名为 logOut() 的 javascript 注销函数,该函数已对 php 脚本进行 jQuery ajax 调用...
function logOut(){
var data = new Object;
data.log_out = true;
$.ajax({
type: 'POST',
url: 'http://www.mydomain.com/functions.php',
data: data,
success: function() {
alert('done');
}
});
}
它调用的 php 函数在这里:
if(isset($_POST['log_out'])){
$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('logOutSuccess')";
$connection->runQuery($query); // <-- my own database class...
// omitted code that clears session etc...
die();
}
现在,一天中有 18 个小时它都能正常工作,但出于某种原因,偶尔 POST 数据不会触发我的查询。(这种情况会持续大约一个小时左右)。我发现在脚本末尾添加这个后,post 数据没有被设置...
$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('POST FAIL')";
$connection->runQuery($query);
因此,现在我确信我的注销功能被跳过了,因为我的数据库中有以下数据:
如果没有跳过,我的数据将显示如下:
我知道它被跳过有两个原因,一是我的第一个函数末尾的 die(),二是如果它成功了,则会在表中注册“logOutSuccess”。
有什么想法吗?一位朋友说这是一家糟糕的托管公司 (hostgator.com)。我个人喜欢他们,因为他们很便宜,而且我是 cpanel 的粉丝。但是,如果是这样呢?
提前致谢。
—J
答案1
这是唯一调用 functions.php 的脚本吗?
不要只记录“POST FAIL”,尝试记录 print_r($_POST, true) 的结果,也许还有 $_SERVER['HTTP_REFERER']。这可能会告诉您失败的调用来自何处。
答案2
尝试使用 HTTP 嗅探器,首先确定问题出在 PHP 脚本还是 AJAX 代码上。或者可能是您不知道的客户端情况。可能根本不是 AJAX 代码。嗅探器将有助于排除这是否确实是客户端问题。