通过 AJAX 请求进行的 POST 失败?

通过 AJAX 请求进行的 POST 失败?

我无论如何也想不通为什么会发生这种事。

这是一种转发(已提交给 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 代码。嗅探器将有助于排除这是否确实是客户端问题。

相关内容