0

在异步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

4

2 回答 2

0

所以问题似乎出在服务器端。似乎 PHP 需要结束当前会话并使用session_write_close()存储会话数据,这样如果asynctrue,每个 ajax 请求就不必等待下一个请求。

所以这是允许来自客户端的并发请求所必需的

于 2018-11-20T12:52:03.040 回答
-1

当 async 设置为 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 时,将进行异步调用而不是同步调用。

于 2018-11-19T13:27:31.773 回答