Задать вопрос

Как сделать быстроотдаваемые ответы на JQuery?

Здравствуйте. Ситуация такова:
пользователь жмёт на кнопку и отправляется долгий $.post запрос. В это время до $.post запроса запускается SetInterval и отправляет с промежутком времени $.get запросы (проверяет статус). Проблема в том, что все эти запросы в SetInterval срабатывают только тогда, когда приходит ответ от $.post. Подскажите, что поменять нужно, чтобы статус возвращался, не дожидаясь ответа от $.post. Спасибо.
  • Вопрос задан
  • 2516 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
WebSpider
@WebSpider
Скорее всего запросы отправляются вовремя, но ответы на них только после завершения post-запроса. Если это так, то скорее всего проблема в сессии (get-скрипты ждут пока отработает post-скрипт, потому что он "держит" сессию). Выход из этой ситуации — закрывать сессию как можно раньше (php.net/session_write_close), либо использовать неблокирующий обработчикй сессий
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
hedint
@hedint
Senior front-end developer
Он и так не дожидается, если вы все правильно написали (запросы асинхронные).
var url = 'foo.php';
        $.post(url, {'action':'post'}, function(data)
        {
            console.log('post');
            console.log(data);
        });
        setInterval(function()
        {
            $.get(url, {'action':'get'},function(data)
            {
                console.log('get');
                console.log(data);
            })
        },2000);

возможно, вы записали get запросы в success callback к post?
Ответ написан
thewind
@thewind
php программист, front / backend developer
1. параметр async в запросе $.post используете или нет?
2. setInterval для $.get запускаете в функции callback или сразу после запуска $.post?

Если в 1) нет или true; 2) сразу после $.post; то должно работать
Ответ написан
Ваш ответ на вопрос

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

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