Ajax Async Post
Я пытаюсь сделать httpost, как показано ниже. Я хочу, чтобы js работал независимо от нижнего ajax, который вызывается каждые 5 секунд. Но это не работает асинхронно. Это ведет себя как синхронизация. Он блокирует JS во время AJAX. Можете ли вы помочь мне понять проблему?
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "../Home/GetMobiles",
data: JSON.stringify(model),
dataType: "json",
async: true,
success: function(data)
{
DivLd.style.display = "none";
SetMoving(data);
glob = data;
},
error: function(xhr, err) {
GetToken();
}
});
1 ответ
Я думаю, что в этом случае невозможно достичь того, что вы ищете, поскольку код JS, который выполняется после запроса AJAX, зависит от данных ответа AJAX. Вы не можете запустить код JS, пока не будет выполнен запрос AJAX. Даже если сам запрос является "асинхронным" по отношению к остальной части кода JavaScript (я поместил асинхронный в кавычки, потому что JS вообще не асинхронный - это может показаться, но на самом деле есть фоновая очередь, которая обрабатывает все операции JS) перемещение кода JS из кода ответа AJAX не будет работать. Это отвечает на ваш вопрос?
Сказав это, иногда вам может потребоваться выполнить определенные операции непосредственно перед выполнением запроса AJAX, например, отображение экрана "Загрузка..." или аналогичного. Если есть операции, которые вы хотите выполнить без ожидания данных ответа, и эти операции не зависят от этих данных, вы можете добавить их прямо перед вызовом $.ajax.