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]   

> Без описания
PATCH
Отправлено: 20 Августа, 2013 - 00:53:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




CODE (javascript):
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.   <title>Заголовок страницы</title>
  4.   <!-- Подключаем JavaScript'овый скрипт с названием current_script.js -->
  5.   <script type='text/javascript' src='http://vk.com/js/api/xd_connection.js?2'></script>
  6.  </head>
  7.  <body>
  8. <script>
  9. function js_vk_init () { VK.api("friends.getAppUsers",{},function(data){
  10.  arr =data.response ;
  11.  str=arr.length;
  12.  return str.ToString;
  13. });   }
  14.  
  15. </script>
  16. <input type="button" onclick="alert(js_vk_init())" value="Считать кролей!"/>
  17.  </body>
  18. </html>

собствено вопрос как вернуть значение из вложеной функции? при
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  function js_vk_init () { VK.api("friends.getAppUsers",{},function(data){
  3.  arr =data.response ;
  4.  str=arr.length;
  5.  alert( str.ToString);
  6. });


все идеально выводит, но мне нужно вернуть полученое значение ввиде строки или числа (по сути в переменой число) когда я использую самый первый код - выводит undefined - что посути означает значение отсутствует)

(Отредактировано автором: 20 Августа, 2013 - 00:53:42)

 
 Top
teddy
Отправлено: 20 Августа, 2013 - 01:26:40
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




Попробуйте заменить
CODE (javascript):
скопировать код в буфер обмена
  1. return str.ToString;

на:
CODE (javascript):
скопировать код в буфер обмена
  1. return str.toString();

(Отредактировано автором: 20 Августа, 2013 - 01:27:22)

 
 Top
PATCH
Отправлено: 20 Августа, 2013 - 08:32:12
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




[quote=teddy][/quote]тоже самое) а не не тоже самое на твой return str.toString(); ругается на синтаксическую ошибку)))

(Отредактировано автором: 20 Августа, 2013 - 08:55:19)

 
 Top
IllusionMH
Отправлено: 20 Августа, 2013 - 11:07:06
Post Id



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


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


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




PATCH, подозреваю, что это асинхронная функция. Тогда из нее нельзя вернуть данные в синхронный код.
Курите в сторону Promises и jQuery.Deferred()
 
 Top
PATCH
Отправлено: 20 Августа, 2013 - 14:08:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




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

CODE (htmlphp):
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.   <title>Заголовок страницы</title>
  4.   <!-- Подключаем JavaScript'овый скрипт с названием current_script.js -->
  5.   <script type='text/javascript' src='http://vk.com/js/api/xd_connection.js?2'></script>
  6.  </head>
  7.  <body>
  8. <script>
  9.  
  10. function js_vk_init () {
  11. VK.api("friends.getAppUsers",{},function(data){
  12. arr =data.response ;
  13. str=arr.length;
  14.  
  15. var elements = document.createElement('div');
  16.  
  17.         elements.setAttribute('style',  'display: none') ;
  18.         elements.setAttribute('numbers',  str) ;
  19.                    
  20.         document.getElementsByTagName('body')[0].appendChild(elements);
  21. });
  22.         znak = document.getElementsByTagName('div')[0].getAttribute('numbers');
  23.         return znak;
  24. }
  25.  
  26.  
  27. </script>
  28. <input type="button" onclick="alert(js_vk_init())" value="GO"/>
  29.  </body>
  30. </html>


ошибку выдает : Uncaught TypeError: Cannot call method 'getAttribute' of undefined на первый раз если кликнуть нечего, на второй раз выдаст значение полученого из атрибута numbers

(Отредактировано автором: 20 Августа, 2013 - 14:09:04)

 
 Top
IllusionMH
Отправлено: 20 Августа, 2013 - 14:17:17
Post Id



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


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


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




PATCH, повторяю.
Это асинхронная функция, и обработчик сработает позже чем строки, которые идут сразу после него.
Вы еще не создали элемент, а пытаетесь считать его невалидный атрибут.
Все нужно переносить в callback
 
 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