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 :: JS не успевает выполниться

 PHP.SU

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


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

> Без описания
Serhio
Отправлено: 03 Февраля, 2017 - 09:41:10
Post Id



Частый гость


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


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




Все привет!

Вот код:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. for(var p in obj.param0){
  3.   $.post( "file.php", {param: param} ,
  4.        function(result2) {
  5.           .... 
  6.        }
  7.   );
  8. }
  9. window.location.reload();
  10.  
  11.  


Так вот, содержимое в функции не успевает выполнится как происходит перезагрузка страницы. Что делать?

(Отредактировано автором: 03 Февраля, 2017 - 09:42:52)

 
 Top
teleoperator27
Отправлено: 03 Февраля, 2017 - 09:53:27
Post Id



Посетитель


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. window.location.reload();
я полагаю это должно быть внутри цикла
 
My status
 Top
Serhio
Отправлено: 03 Февраля, 2017 - 10:24:27
Post Id



Частый гость


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


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




teleoperator27 пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. window.location.reload();
я полагаю это должно быть внутри цикла



Тогда он не пробежится по всем "p" из цикла и после первой итерации перегрузит страницу. По идее он должен быть вне цикла, как и сделано, однако аналогично, происходит перезагрузка ранее, чем выполнятся все итерации цикла. Я не понимаю как работает js в этом плане. Что не так?

(Отредактировано автором: 03 Февраля, 2017 - 10:28:34)

 
 Top
teleoperator27
Отправлено: 03 Февраля, 2017 - 10:43:21
Post Id



Посетитель


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


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




CODE (javascript):
скопировать код в буфер обмена
  1. function(){
  2. for(var p in obj.param0){
  3.   $.post( "file.php", {param: param} ,
  4.        function(result2) {
  5.           ....  
  6.        }
  7.   );
  8. }
  9. window.location.reload();
  10. }

може так
 
My status
 Top
Sail
Отправлено: 03 Февраля, 2017 - 10:45:41
Post Id



Участник


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


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




Serhio пишет:
содержимое в функции не успевает выполнится как происходит перезагрузка страницы

Запрос-то асинхронный.
 
 Top
Serhio
Отправлено: 03 Февраля, 2017 - 10:46:24
Post Id



Частый гость


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


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




сейчас посомтрю
(Добавление)
Sail пишет:
Serhio пишет:
содержимое в функции не успевает выполнится как происходит перезагрузка страницы

Запрос-то асинхронный.


Во! то-что нужно! Действительно, и что в таких случаях делается. Как перегрузить после выполнения всех асинхронных запросов? Цикл for отправляется ассинхронный запрос 10 раз и прекрасно исполняет их если нет перезагрузки страницы. Как сделать перезагрузку страницы после выполнения всех асинхронных запросов из цикла? Есть способы?

(Отредактировано автором: 03 Февраля, 2017 - 10:47:20)

 
 Top
Sail
Отправлено: 03 Февраля, 2017 - 10:53:48
Post Id



Участник


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


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




Serhio пишет:
Как сделать перезагрузку страницы после выполнения всех асинхронных запросов из цикла? Есть способы?
Проще всего - "глобальный" счётчик успешно выполненных запросов увеличивать при выполнении функции success.
По достижении нужного результата - выполнять требуемое действие.
 
 Top
Serhio
Отправлено: 03 Февраля, 2017 - 10:54:31
Post Id



Частый гость


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


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




teleoperator27 пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. function(){
  2. for(var p in obj.param0){
  3.   $.post( "file.php", {param: param} ,
  4.        function(result2) {
  5.           ....  
  6.        }
  7.   );
  8. }
  9. window.location.reload();
  10. }

може так



Нет, не так.
(Добавление)
Sail пишет:
Serhio пишет:
Как сделать перезагрузку страницы после выполнения всех асинхронных запросов из цикла? Есть способы?
Проще всего - "глобальный" счётчик успешно выполненных запросов увеличивать при выполнении функции success.
По достижении нужного результата - выполнять требуемое действие.



Спасибо. Никогда не сталкивался. Можете для примера пару методов чиркануть, покапаю...
з.ы. всегда $post использовал. А если запросов не 10 а N? как узнать окончание цикла for в данном слчае?)

(Отредактировано автором: 03 Февраля, 2017 - 11:09:14)

 
 Top
armancho7777777 Супермодератор
Отправлено: 03 Февраля, 2017 - 17:11:08
Post Id



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


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


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




CODE (javascript):
скопировать код в буфер обмена
  1. (function(url, params, callBack){
  2.  
  3.     var xhrList = $.map(params, function(param){
  4.         return $.get(url, {param: param});
  5.     });
  6.  
  7.     $.when.apply(null, xhrList).done(function(){
  8.         callBack($.map(arguments, function(args){
  9.             return $.isArray(args[0]) ? [args[0]] : args[0];
  10.         }));
  11.     });
  12.    
  13. })('file.php', obj.param0, function(responseList){
  14.  
  15.     console.log(responseList);
  16.     // location.reload();
  17.  
  18. });
 
 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