Th A в AJAX - сокращение от «асинхронный», что означает, что вызов не следует за обычным потоком времени.
Я имею в виду, скажем, у вас есть этот код
alert(1);
some_function();
alert(2);
В javascript вы ожидаете системное предупреждение 1, затем запускаете some_function () и ждете, пока он что-то вернет, и только после его завершения вы увидите предупреждение 2.
Но если some_function () является ajax, вы получаете предупреждение 1, затем предупреждение 2, и вы можете получить результат some_function () между этими двумя предупреждениями, а также после второго предупреждения, потому что вызов ajax работает асинхронно, JS не будет ждать его ответа.
Имея это в виду, давайте вернемся к вашей проблеме.
Вы говорите, что не получите результата, если не предупредите что-нибудь. Если вы что-то предупреждаете, JavaScript останавливается до тех пор, пока пользователь не нажмет «ОК», но Ajax не будет. Так что это создаст временную задержку, и в течение этой временной задержки, ajax, вероятно, завершит работу и вернет результат.
Ваша ошибка в том, что я просто предполагаю, что, поскольку вы не предоставили никакого кода, вы выполняете два вызова ajax подряд, а последний зависит от первого.
var x = some_ajax_function();
var y = some_other_function(x);
это не сработает (вероятно), потому что вторая функция вызывается до того, как будет присвоено значение x. Но если вы поместите предупреждение между ними, вы получите результат, потому что ajax-вызов возвращает результат и назначает x во временной задержке.
Итак, вам нужно изменить свою логику или вызвать вторую функцию в фазе успеха первого вызова Ajax.
что-то вроде
function some_ajax_function()
{
....
//ajax success state
var x = ajax_result;
some_other_function(x);
}
Надеюсь, это поможет