Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с open.window и POST 
V
    Опции темы
kuksha
Дата 15.11.2013, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Изначально нужно сделать из JS запрос к базе и вывести результат в отдельном окошке со скролом.
Поскольку нужна прокрутка и копирование данных из окна, то всплывающий DIV вроде отпадает - нужно именно окошко.

Делаю так:
Код

var Global_data_out="";
function open_big_foto(data_out)

               OpenWindow=window.open("", "newWin", "height=400,width=400");
               OpenWindow.document.write("<HTML><BODY>");
               OpenWindow.document.write(data_out);
               OpenWindow.document.write("</BODY></HTML>");
}

function AjaxZV(data)
{
//некая обработка
Global_data_out=data+'';
alert(данные с сервера получены);
}

$.post(
       "http://info-7.ru/Astro/get_zv.php",
       {
              ID: zv_ID[zv_name]
       },
       AjaxZV
);
open_big_foto(Global_data_out);


То есть, вызывается .post, получаются данные из URL, 
обрабатываются в функции AjaxZV, результаты в которой записываются в глобальную переменную Global_data_out
затем эти данные выводятся в новом окне при помощи open_big_foto.

В итоге получается, что метод .post запускается отдельным процессом, а потом сразу отрабатывает функция open_big_foto, не дожидаясь завершения отдельного процесса .post. Поскольку данные Global_data_out ещё не готовы, то функция open_big_foto показывает пустое окно...
(контрольный алерт, поставленный в конце AjaxZV отображается после появления всплывающего окна, которое рисуется с помощью open_big_foto в основном теле скрипта, то есть AjaxZV явно отправлено в независимый поток...)

Пробовал функцию open_big_foto вызывать прямо в конце функции AjaxZV, но тогда браузер блокирует всплывающее окно.
Можно поставить цикл перед open_big_foto, который будет крутиться, пока Global_data_out не заполнится, но это очень некрасиво.

Что делать?

Это сообщение отредактировал(а) kuksha - 15.11.2013, 22:15
PM MAIL   Вверх
DEER
Дата 16.11.2013, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 2
Всего: 13



Цитата

Поскольку нужна прокрутка и копирование данных из окна, то всплывающий DIV вроде отпадает - нужно именно окошко.

не факт.  smile Попапы через window.open - прошлый век ИМХО
Цитата

Что делать?

в вашем варианте можно передать в post параметр async:false, тогда вызов open_big_foto дождется отработки AjaxZV


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
kuksha
Дата 17.11.2013, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Переделал на аякс и jquery, чтобы можно было асинхронность использовать. Результат - данные передаются как надо, но окно снова блокируется браузером...


Цитата(DEER @  16.11.2013,  12:20 Найти цитируемый пост)
Попапы через window.open - прошлый век ИМХО

А как по-другому? Мне полосы прокрутки в окне нужны - я не знаю заранее объём данных...
DEER, можете пример привести?
PM MAIL   Вверх
DEER
Дата 17.11.2013, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 2
Всего: 13



ну вот, например


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
kuksha
Дата 17.11.2013, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



DEER, спасибо:) Правда такой ссылкой и пришибить ненароком можно... я не профи - любитель...
В принципе нашёл - style overflow-y: scroll; 
Скрол заработал.

Но, если переходить на дивы, то хотелось бы ничего не потерять от обыкновенных окон...
1. Надо иметь возможность размер дива мышкой менять
2. Перетаскивать блок DIV мышкой.
(ужасно не хочется самому писать кучу кода для таких действий - нудно и неинтересно. Может что-то готовое есть? Типа "подключил библиотеку, указал тип дива и пользуйся"? )

Вообще, меня и всплывающие окна устраивают, но как-то нестабильно они работают - то блокируются браузером, если до их вызова POST использовался, то нормально отображаются. 
Если всплывающие окна вызываются без предварительной подкачки данных с сервера POST-ом, то блокировок никогда нет... может просто какой-то флаг принудительно сбрасывать надо?
PM MAIL   Вверх
kuksha
Дата 19.11.2013, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Нашёл отличную вещь:
http://jqueryui.com/dialog/


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.