ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Как вернуть переменные из callback функции в jQuery?
  #1  
Старый 27.05.2009, 10:28
Аватар для ZagZag
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
Post Как вернуть переменные из callback функции в jQuery?

У меня вопрос достаточно не простой, поэтому выделю под него отдельную тему...

Объявляю глобальную переменную, получаю запрос getJSON и присваиваю ей в callback функции полученное значение.
PHP код:
<SCRIPT type='text/javascript'>
$(
document).ready(function() {
    var 
0;
    $.
getJSON('./index.php?cmd=json', function(data) {
        
data.a;
        
alert(1)
        
alert(x)
    });
    
alert(2)
    
alert(x)
});
</
SCRIPT
Трабла в том, что сначала выполняется alert(2) и значение переменной x = 0, а потом уже alert(1) и x принимает новое значение.
Каким образом можно задержать выполнение скрипта пока не будет присвоено значение в callback функции?

PS
Более того, если это все поместить в функцию, а после нее поставить алерт 2, то он всеравно выполнится раньше чем первый ((
Я уже обгуглился весь, ничего по теме не могу найти

Последний раз редактировалось ZagZag; 27.05.2009 в 11:03..
 
Ответить с цитированием

  #2  
Старый 27.05.2009, 11:10
Аватар для MuXaJIbI4
MuXaJIbI4
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме:
108674

Репутация: 32
По умолчанию

так и должно быть alert(2) начнет выполняться сразу после того как будет отправлен запрос на сервер не дожидаясь возвращения результата ....

скажи что в итоге ты хочешь получить?
 
Ответить с цитированием

  #3  
Старый 27.05.2009, 11:34
Аватар для ZagZag
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Мне как раз нужно как-то дождаться ответа от сервера.

getJSON у меня в функции, эта функция вызывается по событию и должна заменять глобальную переменную полученным значением
 
Ответить с цитированием

  #4  
Старый 27.05.2009, 11:57
Аватар для MuXaJIbI4
MuXaJIbI4
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме:
108674

Репутация: 32
По умолчанию

ну так операция внутри функции x = data.a; тебя чем то не устраивает?
 
Ответить с цитированием

  #5  
Старый 27.05.2009, 12:10
Аватар для ZagZag
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Я так понял что после вызова getJSON выполнение скрипта продолжается дальше, данные еще не обновлены, потому-что ответ от сервера приходит не сразу.
Так вот мне как раз и нужно ждать пока сервер ответит, т. к. дальнейшее выполнение скрипта без полученных данных бессмысленно. А вот как выставить задержку пока не придут данные я не знаю.

Но быдлорешения с выставлением задержки не катят, потому-что неизвестно за какое время ответит сервер... и ответит ли он вообще

Последний раз редактировалось ZagZag; 27.05.2009 в 12:12..
 
Ответить с цитированием

  #6  
Старый 27.05.2009, 12:19
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

можно так:
Код:
<script type="text/javascript">
$(function()
{
  var x = 0;
  
  function next()
  {
    alert(2);
    alert(x);
  }
  
  $.getJSON('./index.php?cmd=json', function(data)
  {
    x = data.a;
    
    alert(1);
    alert(x);
    
    next();
  });

});
</script>
или же делать синхронный запрос
 
Ответить с цитированием

  #7  
Старый 27.05.2009, 12:38
Аватар для MuXaJIbI4
MuXaJIbI4
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме:
108674

Репутация: 32
По умолчанию

опередил
 
Ответить с цитированием

  #8  
Старый 27.05.2009, 13:48
Аватар для ZagZag
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Эта функция вызывается из разных частей скрипта по нескольку раз.
А можно про синхронный запрос подробнее?
 
Ответить с цитированием

  #9  
Старый 27.05.2009, 14:04
Аватар для MuXaJIbI4
MuXaJIbI4
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме:
108674

Репутация: 32
По умолчанию

а какая разница сколько раз и откуда ее вызывают если это функция
 
Ответить с цитированием

  #10  
Старый 27.05.2009, 14:14
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
Сообщение от ZagZag  
Эта функция вызывается из разных частей скрипта по нескольку раз.
А можно про синхронный запрос подробнее?
Код:
jQuery.ajax({
  async: false,
  url: './index.php?cmd=json',
  dataType: 'json',
  success: function()
  {
    alert(1);
  }
});

alert(2);
Хотя многие рекомендуют не использовать синхронные запросы, если в этом нет необходимости. Лучше логику пересмотреть.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
F.A.Q по Пранку Nightmarе Статьи 43 28.03.2010 10:55
Как стать хакером! foreva Болталка 19 12.12.2007 00:12
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ