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
Отправлено: 28 Сентября, 2013 - 18:06:09
Post Id



Участник


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


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




Возникла проблема ни знаю как решить, есть запрос например:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. loader(); //Показать лоадер
  3.   $.ajax({
  4.     async:true,
  5.     type: "POST",
  6.     dataType: 'HTML',
  7.     url: "/admin/forms/site_menu.php",
  8.     data: {action:action, id:id, append:append, parametr:parametr},
  9.     success: function(data)
  10.       {
  11.           $(selector).html(data);                                                                        
  12.       },
  13.     error: function()
  14.       {
  15.          alert("Произошла ошибка в процессе обработки, попробуйте еще раз!");  
  16.       },
  17.     complete: function()
  18.       {
  19.         $('#menu_tree li a[data-id='+window.id_select_table_menu+']').addClass('selected_menu'); //Вернули выделение
  20.         close_loader(); //Спрятать лоадер    
  21.       }
  22.  

если асинхронный запрос то отлично отрабатывает функция loader()
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function loader()
  3.    {
  4.         resize();
  5.         $('#loader_container').css('display','block');
  6.         $('#loader').css('display','block');
  7.    }
  8.  

но функция которая будет идти после данной (в примере не обернута в функцию), может выполниться раньше что не допустимо,
если использовать синхронный запрос то все функции работают как надо единственное функция loader не отрабатывает, то есть не заслоняет экран, как решить?
если использовать асинхронные запросы то будет строиться очень длинная конструкция, что не хотелось бы так как в некоторых случаях происходит по 3-5 очередных запросов

(Отредактировано автором: 28 Сентября, 2013 - 18:06:43)

 
My status
 Top
caballero
Отправлено: 28 Сентября, 2013 - 19:49:41
Post Id


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


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


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




ну так выполняй по возврату в success а не просто пиши после


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
3d_killer
Отправлено: 28 Сентября, 2013 - 19:56:16
Post Id



Участник


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


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




вызов идет функция1, функция2, функция3 ......
функции вида:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function функция1
  3. {
  4. loader(); //Показать лоадер
  5.   $.ajax({
  6.     async:true,
  7.     type: "POST",
  8.     dataType: 'HTML',
  9.     url: "/admin/forms/site_menu.php",
  10.     data: {action:action, id:id, append:append, parametr:parametr},
  11.     success: function(data)
  12.       {
  13.           $(selector).html(data);                                                                        
  14.       },
  15.     error: function()
  16.       {
  17.          alert("Произошла ошибка в процессе обработки, попробуйте еще раз!");  
  18.       },
  19.     complete: function()
  20.       {
  21.         $('#menu_tree li a[data-id='+window.id_select_table_menu+']').addClass('selected_menu'); //Вернули выделение
  22.         close_loader(); //Спрятать лоадер    
  23.       }
  24. }

(Добавление)
и как мне выполнить
 
My status
 Top
caballero
Отправлено: 28 Сентября, 2013 - 20:16:36
Post Id


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


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


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




ну так это очевидно

в ответ функции 1 засовывает вызов функции2
в ответ succes функции 2 - вызов функции 3


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
3d_killer
Отправлено: 28 Сентября, 2013 - 20:18:28
Post Id



Участник


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


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




3d_killer пишет:
если использовать асинхронные запросы то будет строиться очень длинная конструкция,

функции эти при разных действиях будут вызываться в разном порядке не хотелось бы несколько таких ветвлений строить на несколько страниц кода
(Добавление)
надо типо того:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. case 1:{menu_core('load_menu', '.content'); menu();  }; break;
  3.  

(Отредактировано автором: 28 Сентября, 2013 - 20:19:47)

 
My status
 Top
caballero
Отправлено: 28 Сентября, 2013 - 20:28:49
Post Id


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


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


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




ну так не используй аякс в таких случаях

в 9 из 10 случаев аякс используют потому что это модно

особенно у новичков которые считают что
если сайт без аякса - то на них ни одна девченка не посмотрит


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
3d_killer
Отправлено: 28 Сентября, 2013 - 20:31:13
Post Id



Участник


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


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




использую аякс для админки удобно без перезагрузок страниц обновлять части страницы
(Добавление)
на самом сайте аякс практически не использую, так как плохо сказывается в плане СЕО
(Добавление)
так что это случай 1 из 10 Улыбка
 
My status
 Top
caballero
Отправлено: 28 Сентября, 2013 - 20:45:41
Post Id


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


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


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




Цитата:
так что это случай 1 из 10

нет
как раз наоборот

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


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
3d_killer
Отправлено: 28 Сентября, 2013 - 20:49:06
Post Id



Участник


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


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




загрузить на страницу 5к++ записей при каждом действии или делать кучу переходов в категорию подкатегорию и т.д. очень сказывается на скорости работы
(Добавление)
у меня есть сроки, но проект закончен просто хотел уменьшить код используя универсальные функции
(Добавление)
типо
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. load_menu() //Загружаем дерево или категорию смотря какие параметры
  3. menu(parent) // раскрашиваем дерево и из кукисов раскрываем как было
  4.  

при добавлении нового пункта каталога надо выполнить сразу 3 функции:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. add_new(id);
  3. load_menu();
  4. menu(parent);
  5.  

и выполниться они должны в заданной последовательности, но эта последовательность может меняться...
(Добавление)
и к тому же переменные глобальные которые работают в течении всего времени от входа до выхода, при перезагрузках что в сесии держать все это?? очень неудобно, в этом случае движок админки получается объемней и сложнее
(Добавление)
а работа с древовидным меню большим с перезагрузкой когда меняется имя какого то пункта и будет перезагрузка чтобы это отразить что все должно быть в якорях??? что будет сбивать визуальное восприятие
 
My status
 Top
caballero
Отправлено: 28 Сентября, 2013 - 21:16:31
Post Id


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


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


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




Цитата:
загрузить на страницу 5к++ записей при каждом действии или делать кучу переходов в категорию подкатегорию и т.д. очень сказывается на скорости работы

а на фига их грузить все сразу.
если уж юзаешь аякс то сделай чтобы пункты подтягивались при разворачивании узла, вряд ли кому то нужно сразу все пункты

Цитата:
и к тому же переменные глобальные которые работают в течении всего времени от входа до выхода, при перезагрузках что в сесии держать все это?? очень неудобно, в этом случае движок админки получается объемней и

фигня
я в сессии держу всю страницу вместе с деревом - никаких проблем.



Цитата:
а работа с древовидным меню большим с перезагрузкой когда меняется имя какого то пункта и будет перезагрузка чтобы это отразить что все должно быть в якорях???

зачем в якорях?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
3d_killer
Отправлено: 28 Сентября, 2013 - 21:17:33
Post Id



Участник


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


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




ну видео еще http://www[dot]ruservic[dot]ru/sdfs/
(Добавление)
caballero пишет:
зачем в якорях?
если меню не поместилось на страницу чтобы потом вернуться к редактируемому пункту
(Добавление)
Возвращаясь к моему вопросу, никак получается вопрос не решить только длинные конструкции?
(Добавление)
caballero пишет:
а на фига их грузить все сразу.
так я и не гружу, а говорил про редактирование без AJAX
 
My status
 Top
nerv
Отправлено: 29 Сентября, 2013 - 16:34:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


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




caballero пишет:
я в сессии держу всю страницу вместе с деревом - никаких проблем

а что не весь сайт? Улыбка

3d_killer пишет:
и выполниться они должны в заданной последовательности, но эта последовательность может меняться

научись сначала излагать свои мысли

3d_killer пишет:
function loader()

"отличное" название. Как думаешь, почему функции принято именовать глаголами, а объекты существительными?

CODE (javascript):
скопировать код в буфер обмена
  1. function слон() { /* слон бежит */ }
  2. function слон() { /* слон лежит */ }
  3. function слон() { /* слон дружит с мартышкой */ }


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
3d_killer
Отправлено: 29 Сентября, 2013 - 19:19:44
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