Я сталкиваюсь со странной проблемой при перенаправлении после асинхронный AJAX POST запрос. Я хочу отправить асинхронный POST-запрос (выгрузка файла) на сервер, и пока я не дождусь его завершения, так как это занимает некоторое время, я хочу перенаправить на другой маршрут и там я могу наблюдать за состоянием загрузки. Моя проблема в том, что даже если я утверждаю, что запрос асинхронной сначала он ожидает завершения этого запроса, синхронно и затем перенаправляет меня.
Я что-то упустил случайно?
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
Таким образом, проблема, кажется, на стороне сервера. Похоже, PHP необходимо завершить текущий сеанс и сохранить данные сеанса с session_write_close () так что каждый запрос ajax не должен ждать следующего, если асинхронной является правда.
Так что это необходимо для разрешения одновременного запроса со стороны клиента
Когда для асинхронного параметра установлено значение false, вместо асинхронного вызова выполняется синхронный вызов.
$.ajax({
method: 'POST',
url: Routing.generate('save'),
data: JSON.stringify({
//My data
}),
cache: false,
contentType : 'application/json',
dataType: 'json',
context: self,
async: false
});
Если для параметра async установлено значение true, вместо синхронного вызова выполняется асинхронный вызов.