Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Последовательность выполнения функций (https://javascript.ru/forum/misc/15072-posledovatelnost-vypolneniya-funkcijj.html)

nematod 12.02.2011 00:53

Последовательность выполнения функций
 
И снова здрасте!)))

Опять зарылся, подскажите хоть в каком направлении двигаться!?

У меня два элемента:
<a>Ссылка</a>
и
<div>Див</div>

И две функции: 1-я аяксом вытягивает данные из базы, 2-я выводит данные в tooltip.

Последовательность действий и проблема:
1. Навожу на ссылку
2. Выполняется первая функци и помещает результат в блок div
3. Выполняется вторая функция и выводит всплывающую подсказку со значением из блока div
ПРОБЛЕМА:
Навожу на ссылку всплывает пустой тултипс, навожу повторно выдаёт нужный результат. Получается вторая функция работает с опозданием или первая. Шо менi робить? ))))

B@rmaley.e><e 12.02.2011 08:59

Вы забыли, что аякс асинхронный. Браузер при исполнении скрипта не будет ждать, пока придет результат, а пойдет дальше - выводить подсказку. Которой нет.

dmitriymar 12.02.2011 13:09

не знаю налетал на подобное -хоть и знал что данные уже загружены полностью. выходил из этого принудительным вызовом функции в перевый раз. как раз это момент прогона с пустотой

nematod 12.02.2011 13:19

Спасибо за помощь, я уже разобрался.
Решил проблему следующим образом:
function Hover(book,part,verse){
			var mes = $("#verse");
			$.ajax({
				type: "POST", url: "путь к php обработчику", data: "Здесь я передаю данные которые пришли от ссылки: book,part,verse",
				complete: function(data){ mes.html(data.responseText); var mess = document.getElementById('verse').innerHTML; tooltip.show(mess);}
			});
		}

Как видите, я загнал выполнение второй функции в "complete:" и всё заработало как нужно.

Надеюсь кому-нибудь пригодится.

nematod 14.02.2011 00:51

И снова здравствуйте!
javascript как азартная игра, только зацепись... ))))

Решение одной проблемы повлекло за собой появление другой.

Объясняю суть проблемы:
при случайном перемещении курсора над ссылкой происходит следующее:
1. посылается запрос ajax для извлечения из БД информации, который занимает от 0,2 до 0,5 секунды.
2. в тот момент когда послан запрос, курсор мышы уже покинул область ссылки и сработала функция tooltip.hide(); которая "закрыла" ещё не открывшийся tooltip
3. после завершения запроса ajax, выполняется функция tooltip.show(mess); которая открывает tooltip, намертво привязывая его к курсору.

Жду любых предложений решения проблемы

dmitriymar 14.02.2011 00:56

Цитата:

Сообщение от nematod
в тот момент когда послан запрос, курсор мышы уже покинул область ссылки и сработала функция tooltip.hide(); которая "закрыла" ещё не открывшийся tooltip

запрети выполнение её,введи флаг. если ответ не получен то он -0,если получен 1.
проверка в функции -если флаг 0-то не выполнять её

nematod 14.02.2011 11:01

Пример можешь привести?

nematod 25.02.2011 03:16

Решил проблему как в армии, вместо ховера для вызова функции установил онклик. Всё ничего, но появилась новая проблема)))
Позиционирование тултипа происходит при движении мышкой:
document.onmousemove = this.pos;

а т.к. я установил онклик, после клика мышь не двигается и тултип всплывает хрензнаетгде! ШоМенiРобить?)))
Жду свежих идей, свои уже закончились.


Часовой пояс GMT +3, время: 04:23.