我正在尝试使用一个 ajax 导入数据,并尝试使用另一个 ajax 对导入的数据进行实时跟踪以显示进度条(已上传多少记录)。
checkPrgressVar = setInterval(checkPrgress, 1000);
importTaxes(importURL,cart_url,cart_token);
/* check progress of imported data */
function checkPrgress()
{
$.ajax({
url: $(document).find("input[name='progressURL']").val(),
type: 'POST',
dataType: 'json',
// showLoader: true,
data: "action=import_store",
complete: function(response) { debugger
var response = response.responseJSON.output;
},
error: function (xhr, status, errorThrown) {
console.log('Error happens. Try again.');
}
});
}
/* import data */
function importTaxes(importURL,cart_url,cart_token)
{
$.ajax({
url: importURL,
type: 'POST',
dataType: 'json',
showLoader: true,
data: "cart_url="+cart_url+"&cart_token="+cart_token+"&action=import_tax",
complete: function(response) { debugger
var response = response.responseJSON.output;
if(response.result == 'processing')
{
}
else
{
}
},
error: function (xhr, status, errorThrown) {
console.log('Error happens. Try again.');
}
});
}
我的 checkProgress ajax 仅在从 importTax ajax 获得响应后才返回响应,而此 checkProgress ajax 应该独立于 importProgress ajax。
然而,两个 ajax 都在调用不同的控制器,似乎 magento 不允许调用另一个控制器,直到它处理另一个控制器。
我不知道它为什么会发生以及如何解决它?
我已经尝试过这个链接,但没有工作。
是否可以在 Magento 2 后端异步触发多个 ajax 请求?
EDIT1:我发现如果我在 checkProgress ajax 调用中调用另一个外部 URL 而不是 magento2 控制器。它开始工作了。这意味着 magento2 不允许在另一个控制器通过 import ajax 运行时执行另一个控制器。
EDIT2-如果我将env.php文件中的会话存储从“文件”更改为“db”,则两个 ajax 都开始按预期工作。这似乎是一个会话阻塞问题,如下面的链接所述 -
但是使用数据库作为会话存储并不可取。因此,如果我将文件用作会话存储,我仍然不知道如何解决它。
有任何想法吗?