JQuery Ajax Асинхронное перенаправление - PullRequest
0 голосов
/ 19 ноября 2018

Я сталкиваюсь со странной проблемой при перенаправлении после асинхронного ajax-запроса POST.Я хочу отправить асинхронный запрос POST (выгрузка файла) на сервер, и пока я не дождусь его завершения, так как это занимает некоторое время, я хочу перенаправить на другой маршрут и там я могу наблюдать за состоянием загрузки.Моя проблема в том, что, даже если я утверждаю, что запрос async , он сначала ожидает завершения этого запроса, синхронно , а затем перенаправляет меня.Я что-то упустил случайно?

upload.save = function (data) {
    var self = this,
        result = self.uploadType.getSummaryData();

    $.ajax({
        method: 'POST',
        url: Routing.generate('save'),
        data: JSON.stringify({
            //My data
        }),
        cache: false,
        contentType : 'application/json',
        dataType: 'json',
        context: self
    });

    // Redirection
    setTimeout(function () {
        window.location.replace(Routing.generate('log'));
    }, 3000);
};

Я использую Symfony 3.4 и JQuery версии 2.1, а для перенаправления я использую FOS JS Routing Bundle v ~ 1.4

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Таким образом, проблема, кажется, на стороне сервера. Похоже, что PHP необходимо завершить текущий сеанс и сохранить данные сеанса с помощью session_write_close () , чтобы каждому ajax-запросу не приходилось ждать следующего, если async равно верно .

Так что это необходимо для разрешения одновременного запроса со стороны клиента

0 голосов
/ 19 ноября 2018

Когда для асинхронного параметра установлено значение false, вместо асинхронного вызова выполняется синхронный вызов.

 $.ajax({
        method: 'POST',
        url: Routing.generate('save'),
        data: JSON.stringify({
            //My data
        }),
        cache: false,
        contentType : 'application/json',
        dataType: 'json',
        context: self,
        async: false
    });

Если для асинхронного параметра установлено значение true, вместо синхронного вызова выполняется асинхронный вызов.

...