Я получаю вывод, если я "ALERT" некоторый текст, иначе я не получил o / p при использовании ajax с javascript и jquery - PullRequest
0 голосов
/ 17 марта 2010

Я получаю ошибку другого типа в моем приложении.

В моем проекте большая часть функциональности в ajax. Теперь моя проблема, если я "ALERT" что-то я получаю вывод. Иначе я нет. Я полностью запутался в этом вопросе и понятия не имею, как его решить.

Каким будет решение?

Любые ответы будут полезны и благодарны ..

заранее спасибо

1 Ответ

1 голос
/ 17 марта 2010

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);
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...