Что делать, если нет ответа от сервера при ajax запросе?

Добрый день, впервые сталкиваюсь с такой ситуацией и прошу Вашей помощи.

Есть 2 файла: index.php и xml.php.
index.php:
$.ajax({
    url: 'xml.php',
    type: 'POST',
    cache: false,
    data: {table: export_t},  //html таблица
    success: function(){
        window.open('xml.php', 'export');
    }
});


xml.php
session_start();
if(isset($_POST['table'])){ // когда пришли данные ajax
    $_SESSION['table'] = $_POST['table'];
}
else{ //когда открыли страницу по завершении ajax
    echo $_SESSION['table'];
}


Проблема возникает где-то в получении POST данных, т.к. остальное отрабатывает без проблем.

Итак, отправляем html таблицу через ajax, она должна быть записана в сессию и, при открытии страницы, выведена.
При ручном внесении данных в $_SESSION['table'] - все выводит нормально. При Ajax - в консоли хрома статус pending, до таймаута, заголовок: "Provisional headers are shown". Соответственно, данные в сессию не пишутся и ответ не возвращается.

P.S.: В логах пусто, ошибок нет.
P.P.S.: Проблема НЕ в сессиях, то же самое происходит, если оставить в файле xml.php только
if(isset($_POST['table'])){
    echo $_POST['table'];
}

НО
if(isset($_POST['table'])){
    echo 1;
}

отдает ответ.

Очень сомневаюсь и, на сколько мне известно, ограничений нет, но:
export_t.length = 6640 могут быть проблемы с отправкой длинных строк?

P.P.P.S.: как-то само все заработало после уменьшения и увеличения обратно передаваемых данных. Если есть идеи, как это произошло - мне очень интересно.
  • Вопрос задан
  • 5207 просмотров
Решения вопроса 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
кароч сессии типа они на локах сделаны и если таймаут то возможно твоя сессия была открыта где-то в другом месте и не закрыта и ты пытаешься ещё раз её открыть а на ней уже лок и оно ждёт получения лока но не дожидается как-то так короч не бери сессии в аякс запросах это мутная штука рейс кондишены там всякие.... апасно это
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
wladyspb
@wladyspb
Программист
Добавьте в $.ajax({ метод error, чтобы получить подробности об ошибке. Рекомендую так же в скрипте принимающем запрос возвращать какой-либо ответ, типа успешно\неуспешно.
Ответ написан
miraage
@miraage
Старый прогер
А вы отдайте при POST запросе нормальный ответ.
Возможно, при empty response что-то не так.
Выплюньте хотя бы в JSONe {success: true}.

// EDIT

Как отметил evnuh, попробуйте так же вызвать session_write_close() после того, как запишете данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы