Ошибка 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 поможет устранить проблему, определенно клиентскую или нет.