Ошибка POST через AJAX-запрос?

Я не могу на всю жизнь понять, почему это происходит.

Это что-то вроде репоста (переданного в stackoverflow, но, возможно, проблема с сервером?).

Я запускаю функцию выхода из системы JavaScript с именем logOut(), которая делает вызов jQuery ajax для сценария php...

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 не будут запускать мой запрос. (это будет длиться около часа или около того). Я понял, что данные поста не устанавливаются, добавив это в конец моего скрипта...

$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('POST FAIL')"; 
$connection->runQuery($query);

Итак, теперь я точно знаю, что моя функция выхода из системы пропущена, потому что в моей базе данных есть следующие данные:

альтернативный текст

если бы он не пропускался, мои данные отображались бы так:

альтернативный текст

Я знаю, что его пропускают по двум причинам: одна - die() в конце моей первой функции, а вторая - в случае успеха в таблице будет зарегистрирован logOutSuccess.

Какие-нибудь мысли? Один из друзей говорит, что это джанки хостинговая компания (hostgator.com). Мне лично они нравятся, потому что они дешевые, и я фанат cpanel. Но если это так???

Заранее спасибо.

-J

2 ответа

Решение

Это единственный скрипт, который вызывает functions.php?

Вместо того, чтобы регистрировать просто "POST FAIL", попробуйте зарегистрировать результат print_r($_POST, true) и, возможно, $_SERVER['HTTP_REFERER']. Это может сказать вам, откуда поступают неудавшиеся звонки.

Попробуйте перехватчик HTTP, чтобы сначала выяснить, является ли это ваш PHP-скрипт с проблемой или кодом AJAX. Или это может быть клиентское состояние, о котором вы не знаете. Это может быть совсем не ваш AJAX-код. Sniffer поможет устранить проблему, определенно клиентскую или нет.

Другие вопросы по тегам