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]   

> Без описания
3d_killer
Отправлено: 18 Апреля, 2014 - 09:53:22
Post Id



Участник


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


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




есть функция например:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function f_load_block(url,action,block, off)
  3.         {
  4.                 f_loader();
  5.                 $.ajax({
  6.                 async:true,
  7.                 type: "POST",
  8.                 dataType: 'HTML',
  9.                 url: url,
  10.                 data: {action:action},
  11.                 success: function(data)
  12.                         {      
  13.                                 eval('var obj=' + data);       
  14.                                 if (obj.data['error']=='')
  15.                                         {
  16.                                                 $(block).html(obj.data['data']);
  17.                                                 return true;
  18.                                         }
  19.                                 else
  20.                                         {
  21.                                                 f_data_info(obj.data['error']);
  22.                                                 f_close_loader();
  23.                                                 return false;
  24.                                         }
  25.                         },
  26.                 error:function()
  27.                         {
  28.                                 f_data_info("Произошла ошибка в процессе обработки, попробуйте еще раз!");
  29.                                 f_close_loader();
  30.                                 return false;
  31.                         },
  32.                 complete:function()
  33.                         {
  34.                                 if(off==1)
  35.                                         {
  36.                                                 f_close_loader();
  37.                                         }
  38.                         }
  39.                 });    
  40.         }
  41.  

и тут несколько return, но я не могу получить их то есть они не возвращаются при вызове, как поступить?
 
My status
 Top
Мелкий Супермодератор
Отправлено: 18 Апреля, 2014 - 09:56:47
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




В функции f_load_block нет ни одного return.


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 09:58:29
Post Id



Участник


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


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




я понял что у меня получается ретурн вложенной функции а как вернуть то что вернула вложенная функция?
(Добавление)
задать какую то переменную и взависимости от нее возвращать true или false наверно?
(Добавление)
получается она невидима там будет, что то вобщем не пойму
(Добавление)
написал так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function f_load_block(url,action,block, off)
  3.         {
  4.                 f_loader();
  5.                 var query=$.ajax({
  6.                 async:true,
  7.                 type: "POST",
  8.                 dataType: 'HTML',
  9.                 url: url,
  10.                 data: {action:action},
  11.                 success: function(data)
  12.                         {      
  13.                                 eval('var obj=' + data);       
  14.                                 if (obj.data['error']=='')
  15.                                         {
  16.                                                 $(block).html(obj.data['data']);
  17.                                                 return true;
  18.                                         }
  19.                                 else
  20.                                         {
  21.                                                 f_data_info(obj.data['error']);
  22.                                                 f_close_loader();
  23.                                                 return false;
  24.                                         }
  25.                         },
  26.                 error:function()
  27.                         {
  28.                                 f_data_info("Произошла ошибка в процессе обработки, попробуйте еще раз!");
  29.                                 f_close_loader();
  30.                                 return false;
  31.                         },
  32.                 complete:function()
  33.                         {
  34.                                 if(off==1)
  35.                                         {
  36.                                                 f_close_loader();
  37.                                         }
  38.                         }
  39.                 });
  40.                 if(query==true)
  41.                 {return true;}
  42.                 else{return false;}    
  43.         }
  44.  

возвращает всегда false, помогите решить вопрос
 
My status
 Top
Мелкий Супермодератор
Отправлено: 18 Апреля, 2014 - 10:22:47
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




А где вопрос?
Это асинхронный код. f_load_block никоим образом не связана с callback'ами.


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 10:29:00
Post Id



Участник


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


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




вопрос вот в чем, у меня выполняются сразу несколько действий по окончанию всех должен спрятаться loader, или другой вариант так же выполняются несколько вызовов данной функции одновременно, но еще допустим один вызов должен произойти после окончания работы второго допустим.
как я могу такое осуществить?
 
My status
 Top
Мелкий Супермодератор
Отправлено: 18 Апреля, 2014 - 10:44:14
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Так и пишите.
В какой-нибудь удобной области видимости добавляете счётчик запущенных запросов. Перед $.ajax инкрементируете счётчик, в callback'е декрементируете. Там же проверяете, если счётчик стал равен нулю - всё, приехали, все потоки завершены.

Последовательный вызов - у вас же есть calback success. В чём проблема там и делать следующий запрос?


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 10:48:17
Post Id



Участник


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


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




ну так его то выполнять не всегда нужно, и выполняется он этой же функцией только с параметрами другими
(Добавление)
хочу просто написать функцию которая бы загружала мне необходимый контент (коментарии, элементы управления и.д.) иногда просто они грузятся одновременно.
а иногда возникает необходимость загрузить например список, а потом выделить определенный элемент в нем (добавить класс), и пока данные не пришли класс не добавится и функция отработает впустую...
 
My status
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 12:56:47
Post Id



Участник


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


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




написал функции лоадера но пришлось с глобальной переменной:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. window.loader=new Array(); //Массив для лоадера
  3. //Показать лоадер
  4. function f_loader(action)
  5.         {
  6.                 var count=window.loader.length;
  7.                 window.loader[count]=action;
  8.                 $('#bg_loader').css('display','block');
  9.                 f_resize();    
  10.         }
  11. //Закрыть лоадер
  12. function f_close_loader(action,force)
  13.         {
  14.                 if(force==0)
  15.                         {
  16.                                 var index = $.inArray(action, window.loader);
  17.                                 window.loader.splice(index, 1);
  18.                                 if(window.loader.length==0)
  19.                                         {              
  20.                                                 $('#bg_loader').css('display','none');
  21.                                         }
  22.                         }
  23.                 else
  24.                         {
  25.                                 window.loader=null;
  26.                                 $('#bg_loader').css('display','none'); 
  27.                         }
  28.         }
  29.  
 
My status
 Top
IllusionMH
Отправлено: 18 Апреля, 2014 - 13:11:45
Post Id



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


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


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




3d_killer, все это можно обернуть в IIFE и тогда это будет переменная из замыкания без засорения глобального пространства.
Имхо лучше loader.push(action) (даже ие5.5 в курче что нужно делать)
 
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 13:23:24
Post Id



Участник


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


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




у меня ругнулось на push типо неизвестная функция, поэтому написал так
 
My status
 Top
IllusionMH
Отправлено: 18 Апреля, 2014 - 13:49:38
Post Id



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


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


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




3d_killer, странно, не могу воспроизвести даже с new Array()(можно попробовать заменить на человеческий []).
 
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 13:59:31
Post Id



Участник


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


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




может библиотечка JQUERY не подключена?
 
My status
 Top
IllusionMH
Отправлено: 18 Апреля, 2014 - 14:19:01
Post Id



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


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


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




3d_killer, а как jQ влияет на стандартные объекты? Она как раз все фиксы в себе хранит чтобы конфликтов не вызывать.
Array[dot]prototype[dot]push в принципе это не так важно (просто не могу понять почему не работает), главное что есть рабочий вариант.
 
 Top
3d_killer
Отправлено: 18 Апреля, 2014 - 14:40:53
Post Id



Участник


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


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




Ну хорошо
 
My status
 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