Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 11
devilmaycry Сообщение 22/02/2011 20:32 Копия темы
jquery Помогите разобраться

$( document ).ready( function() {

createHints( 'img', /\d+$/, function( id ) {

var htmlx = '';

$.ajax({
   type: "POST",
   url: "engine/ajax/tooltips/skill.php?wqid=" + id +"&key=" + Math.random(),
   data: "name=John&location=Boston",
   success: function(msg){
htmlx += '#' + msg + '';
   }
});

return htmlx;
} );
} );


Почему return htmlx; выводит пустоту? Например если заменить htmlx += '#' + msg + ''; на alert(msg), то в алерте выводится содержимое переменной msg. Я НЕ знаю JS, по этому помогите дельным советом, а не ссылкой в мануал.
seoadvisor Сообщение 22/02/2011 20:48 Копия темы
Полезное 7ucoz.com/load/knigi/java...

Тут учебник.
Free-man Сообщение 22/02/2011 20:49 Копия темы
запрос асинхронный, 
return htmlx возвращается раньше, чем выполнится запрос
devilmaycry Сообщение 22/02/2011 20:51 Копия темы
Оххх...))
devilmaycry Сообщение 22/02/2011 20:52 Копия темы
Может подскажете, как сделать так, чтобы работало. Я уже 5 часов к ряду проклинаю JS))
unart Сообщение 22/02/2011 20:55 Копия темы
я подобное решал путем проверки переменной в php, т.е на success: навешивалась проверка возврата из php определенного условия
RiDDi Сообщение 22/02/2011 21:02 Копия темы
функции с асинхронными запросами надо вызывать с калбеками вместо return

аля

функция(калбек)
{
      $.ajax({success:function(){
            if(калбек && $.isFunction(калбек)) калбек();
      });
}

devilmaycry Сообщение 22/02/2011 21:06 Копия темы
Вот просто ради любопытства, с какой целью вы это написали?))
RiDDi Сообщение 22/02/2011 21:10 Копия темы
что бы Вы поняли как работают асинхронные функции ))
так же как обработчики событий 
в принципе асинхронные запросы это и есть своего рода обработчики событий для браузера )
devilmaycry Сообщение 22/02/2011 21:11 Копия темы
И вы серьезно думаете, что я, НЕ знающий JS, пойму то, что вы написали?
tu512 Сообщение 22/02/2011 23:35 Копия темы
не зная контекста применения этой функции сложно что-то советовать.

А почему не работает?
потому что при вызове функции createHints
сначала выполняется var htmlx='';
потом делается запрос через ajax – строка $.ajax и дальше...
после этого делается return htmlx (там естественно ничего нет)

а после того как выполнится асинхронный запрос выполняется  код из строки htmlx += '#' + msg + '';

такая вот последовательность выполнения. в этом собственно и ошибка (это если еще не заморачиваться по поводу видимости переменных.

поэтому если надо что-то менять, то менять прямо в функции вызываемой по success

например заменить 
htmlx += '#' + msg + ''; 
на
$('#' + msg + '').html('done'); 
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"