Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2018, 23:42
Аспирант
Отправить личное сообщение для Ramundo Посмотреть профиль Найти все сообщения от Ramundo
 
Регистрация: 07.03.2015
Сообщений: 47

Помогите, не отрабатывает процедура
Это просто какое-то феерическое фуфло...
Использую JQuery Widget Tooltip, чтобы показать ответ ajax в виде подсказки.

Есть массив, который должен хранить ответы сервера.
При наведении на элемент с классом "hero" берется его значение data-id, и если оно уже есть в массиве , то подсказка берется оттуда.
Если же значения в массиве нет, то делается запрос на сервер по этому id, а ответ, во-первых, заносится в массив, а во-вторых, ДОЛЖЕН, НО НЕ ПОКАЗЫВАЕТСЯ в качестве текста посказки.

Таким образом, скрипт отрабатывает сейчас так:

я навожу на элемент с классом hero, нифига не происходит, но ответ появился в массиве .
отвожу курсор с элемента, снова навожу и подсказка показывается, т.к. найден в массиве.

Помогите, пожалуйста, допилить так, чтобы подсказка показывалась сразу в любом случае





<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>

var heroes = {"1":"shit 1" };
    
	
 $(document).tooltip({
    items:'.hero',
    tooltipClass:'preview-tip',
    position: { my: "left+15 top", at: "right center" },
	show:false,
	hide:false,
	track: false,
    content:function() {
		
		var elt = $( this );
		var hero_id = elt.data("id");
		
		if (typeof(heroes[hero_id]) != "undefined"){
			return heroes[hero_id];
		}
		else{
			var answer;		
			
			$.ajax({
			  url: "ajax_1.php",
			  method: "POST",
			  data: "a=1&b=2"			 
			}).done(function(data) {
				heroes[hero_id] = data;
				answer = data;
				
			}).fail(function() {
				answer = "error";
			});
			
			return answer;
			
		}
		
		
    }
});

</script>
<img src = "sw.jpg" class = "hero" data-id = "2">

Последний раз редактировалось Ramundo, 19.04.2018 в 23:48.
Ответить с цитированием
  #2 (permalink)  
Старый 20.04.2018, 03:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Ramundo
ДОЛЖЕН, НО НЕ ПОКАЗЫВАЕТСЯ
Не должен, его там еще нет, а что сразу показался, его мало добавить в массив в .done, его надо еще и показать здесь.
Ответить с цитированием
  #3 (permalink)  
Старый 20.04.2018, 19:03
Аспирант
Отправить личное сообщение для Ramundo Посмотреть профиль Найти все сообщения от Ramundo
 
Регистрация: 07.03.2015
Сообщений: 47

Если ответа там еще нет, то что тогда добавляется в массив? Я что-то не въезжаю...

Мне бы просто получить ответ и запихнуть его в подсказку. почему все так сложно то...

Почему можно вывести ответ алертом, но нельзя просто записать в переменную или вернуть?

Последний раз редактировалось Ramundo, 20.04.2018 в 19:12.
Ответить с цитированием
  #4 (permalink)  
Старый 20.04.2018, 21:04
Аспирант
Отправить личное сообщение для Ramundo Посмотреть профиль Найти все сообщения от Ramundo
 
Регистрация: 07.03.2015
Сообщений: 47

var heroes = {"1":"shit 1" };

function myReturn(val){
	return val;
}
	
 $(document).tooltip({
    items:'.hero',
    tooltipClass:'preview-tip',
    position: { my: "left+15 top", at: "right center" },
	
    content:function(myReturn) {
		
		var elt = $( this );
		var hero_id = elt.data("id");
		
		if (typeof(heroes[hero_id]) != "undefined"){
			return heroes[hero_id];
		}
		else{
			var answer;		
			
			$.ajax({
			  url: "ajax_1.php",
			  method: "POST",
			  data: "a=1&b=2"			 
			}).done(function(data) {
				heroes[hero_id] = data;
				myReturn(data);
				
			}).fail(function() {
				return "error";
			});
			
			
			
		}
		
		
    }
});
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2018, 00:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Ramundo
Почему можно вывести ответ алертом, но нельзя просто записать в переменную или вернуть?
Кому? Накатили мышку, пусто, инициализировали запрос, получили ответ, но не показали, когда он будет показан? Ответ тут - отвожу курсор с элемента, снова навожу и подсказка показывается, т.к. найден в массиве.
Только это не массив а объект.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите отловить ошибку Alex_dark74 Элементы интерфейса 0 28.10.2014 10:05
Не отрабатывает пример из книги - помогите разобраться, почему. Ленча jQuery 2 13.07.2014 22:11
Люди, помогите дилетанту! Как объеденить скрипты в один файл? patroklit Элементы интерфейса 3 04.12.2013 12:55
Помогите решить задачку. Андрей_ Javascript под браузер 3 26.06.2012 16:21
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50