Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с глобальной переменной

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
MichaelPak
Отправлено: 12 Февраля, 2013 - 14:38:05
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Функция:
CODE (javascript):
скопировать код в буфер обмена
  1. function move() {
  2.         var way;
  3.         $.post('inc/generator.php', function(data) {
  4.                 json = JSON.parse(data);
  5.                 way = json.way;
  6.                 //1
  7.                 console.log(json.way);
  8.                 //2
  9.                 console.log(way);
  10.         });
  11.         //3
  12.         console.log(way);
  13. }
Первые две console.log в консоли выдают все правильно, последняя пишет
Цитата:
undefined
. В чем проблема?
 
 Top
caballero
Отправлено: 12 Февраля, 2013 - 14:53:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
В чем проблема?

в том что она undefined
проинициализируйте по человечески

(Отредактировано автором: 12 Февраля, 2013 - 14:53:55)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
SAD
Отправлено: 12 Февраля, 2013 - 14:54:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




$.post ассинхронен.

используйте ajax

CODE (javascript):
скопировать код в буфер обмена
  1. function move() {
  2.     var way;
  3.     $.ajax({
  4.         url: 'inc/generator.php',
  5.         type: "POST",
  6.         success: function (data) {
  7.             way = data;
  8.         },
  9.         async: false,
  10.         dataType: 'json'
  11.     });
  12.  
  13.     console.log(way);
  14.  
  15. }
 
 Top
caballero
Отправлено: 12 Февраля, 2013 - 14:55:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
используйте ajax

там и так аякс.
и на результат замена не повлияет

(Отредактировано автором: 12 Февраля, 2013 - 14:56:23)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
SAD
Отправлено: 12 Февраля, 2013 - 14:56:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




нет атрибута async: false в post
 
 Top
caballero
Отправлено: 12 Февраля, 2013 - 14:59:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
нет атрибута async: false в post

а если ему именно асинхронка нужна? на фига тогда аякс если отправлять синхронно.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
SAD
Отправлено: 12 Февраля, 2013 - 15:02:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




он спросил почему переменная undefined. я отвечаю, что запрос выполнился позже(т.к. он ассинхронен) и соответсвенно присвоение переменной произошло позже, чем вывод переменной в консоль, после $.post
(Добавление)
caballero пишет:
а если ему именно асинхронка нужна


сомневаюсь
 
 Top
caballero
Отправлено: 12 Февраля, 2013 - 15:15:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
он спросил почему переменная undefined. я отвечаю, что запрос выполнился позже(т.к. он ассинхронен) и соответсвенно присвоение переменной произошло позже, чем вывод переменной в консоль, после $.post

Разумеется. Просто я стараюсь отвечать чтобы человек задумался и возможно чему то научился. Если бы он проинициалировал переменную то увидел бы как выводится ее значение а потом то что в post - наглядный пример илюстрирующий асинхронные вызовы.
Хотя, строго говоря, - аякс - это паралельный (фоновый) вызов а не асинхронный.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DelphinPRO
Отправлено: 12 Февраля, 2013 - 15:27:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




SAD пишет:
используйте ajax

лучше пересмотреть логику работы скрипта, а не тормозить выполнение синхронными запросами.
(Добавление)
caballero пишет:
Хотя, строго говоря, - аякс - это паралельный (фоновый) вызов а не асинхронный.

Те же яйца, только в профиль Улыбка какая разница, как назвать - параллельный или асинхронный, суть одна и та же.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB