Сообщение AJAX не отправляет данные? - PullRequest
1 голос
/ 19 мая 2010

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

Это что-то вроде репоста, так что прости меня, но у меня есть новые данные.

Я запускаю функцию выхода из системы 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);

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

альтернативный текст http://img535.imageshack.us/img535/2025/screenshot20100519at125h.png

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

альтернативный текст http://img25.imageshack.us/img25/8104/screenshot20100519at125.png

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

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

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

-J

Ответы [ 3 ]

4 голосов
/ 20 мая 2010

Хорошо, для тех, кто заинтересован.

Я удалил полный URL http://www.mydomain.com/functions.php и заменил его на локальный путь functions.php, и это помогло.

Очевидно, у AJAX есть проблемы с междоменными вызовами ajax, и я не на выделенном сервере, поэтому я представляю, что происходит каждые пару часов (или минут) Данные POST.

-J

0 голосов
/ 20 мая 2010

У меня сильное ощущение, что это скорее проблема на стороне сервера, чем на стороне клиента.

Странно то, что вы видите проблему в течение определенного периода времени. Если клиент работает вообще, то при минимальном обновлении страницы или перезапуске браузер должен это исправить.

Функция die () в конце функции подозрительна, но я не совсем уверен, как это повлияет на нее.

Кстати, вы можете видеть заголовки http на вкладке Net FireBug, чтобы узнать, были ли эти параметры отправлены правильно.

0 голосов
/ 20 мая 2010

Попробуйте включить отчеты об ошибках в функции 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');
        },
       error: function(XMLHttpRequest, textStatus, errorThrown) {
       alert(textStatus+" - "+errorThrown);
       }
    });
}

Посмотрите, проливает ли это свет на вашу ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...