|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
КАК сделать чтобы CGI программа возвратила результат в два фрейма на обном окне? Смысл задачи: Есть HTML окно которое разделено на два фрейма. В верхнем фрейме надо ввести кучу параметров запроса и по кнопке запустить Perl программу. Программа возвращает результат в нижний фрейм и некоторую переменную в верхний фрейм. Т.е. нужно чтобы фрейм с параметрами не перезагружался заново, но чтобы он получил некоторую информацию о результате запроса. Если кто знает подскажите...
|
|
|
|
|
Supreme Being
      
участник
Last Login: 21.06.2006 23:51
Сообщ.: 326,
Visits: 3 588
|
|
При помощи CGI именно так не сделать, но есть два варианта 1) JavaScript, который запускает невидимую форму во втором фрейме 2) Первый фрейм всё же рефрешится, но CGI заполняет все данные повторно. Правда при этом похоже нижний фрейм всё-равно без JScript не перегрузить.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
| А нельзя ли поподробнее как это сделать через JavaScript?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.10.2006 1:31
Сообщ.: 143,
Visits: 1 577
|
|
1)В форму пишем, что ответ пойдет в нижний фрейм: print $query->startform(-action=>"$script_name/нижн_фрейм",-TARGET=>"нижн_фрейм"); 2)кнопке Submit приписываем на JavaScript вызов нашего скрипта в верхний фрейм с каким-нибудь параметром print $query->submit(-(onClick=>"parent.верх_фрейм.location.href=\'$script_name\/верх_фрейм\?qq=qq\'\;"); (можно без CGI.pm, но так как-то комфортнее;) -Где переменная $script_name из CGI - имя и путь самой программы -имена фреймов в пути после CGI дают знать CGI, что не нужно рефрешить фреймсет (может можно обойтись и без этого, я в данном случае использую чужие перловые идеи) -параметр qq дает знать функции, выводящей данные в верхний фрейм, что надо дописать то, что ты хочешь При этом в нижний фрейм выводится результат запроса, а в верхний - то, что требуется Полный Perl-овый скрипт нужен?
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.10.2006 1:31
Сообщ.: 143,
Visits: 1 577
|
|
#!/usr/local/bin/perl use CGI qw(:standard); $query = new CGI;
#Начинаем генерить HTML print $query->header; # Аналог пути к файлу во frameset. $path_info = $query->path_info; # Если данных о пути еще нет, задаем frameset if (!$path_info) { &print_frameset; exit 0; } # начало, если указывать кодировку - пишем свой старт print $query->start_html;
# вызываем функцию для верхнего фрейма &print_query if $path_info=~/query/; # вызываем функцию для нижнего фрейма &print_response if $path_info=~/response/;
print $query->end_html; # конец # задаем frameset
sub print_frameset { $script_name = $query->script_name; print "<html><frameset rows=\"50,50\">"; print "<frame src=$script_name\/query name=\"query\">"; print "<frame src=\"$script_name\/response\" name=\"response\">"; print "<\/frameset>"; exit 0; }
sub print_query { # верхний фрейм # имя CGI $script_name = $query->script_name;
print h1("Тут у нас запрос"), ""; # форма - начало ответ пойдет вниз print $query->startform(-action=>"$script_name/response",-TARGET=>"response"); # всякая лирика print "<p>Какой вопрос мы хотим задать? ", # какие-нибудь элементы формы $query->popup_menu(-name=>'vibor', -values=>['первый ответ','второй ответ']); # Кнопка Submit с JavaScript-ным OnClick-ом в верхний фрейм print p($query->submit(-onClick=>"parent.query.location.href=\'$script_name\/query\?qq=qq\'\;")); # конец формы print $query->endform;
# Если был запрос if (param("qq")) { print h3("А тут пишется что-то, если был запрос"); } return; }
# нижний фрейм (основной ответ на запрос) sub print_response { print h1("Основной результат CGI"), ""; if (!($query->param)) { # если еще ничего не передали в скрипт print "<b>Ничего еще не передавали</b>"; return; } # А тут выводим собственно результаты обработки параметров print "<P>А вот и ответ: <I>",$query->param(vibor),"</I>"; }
Результат можно посмотреть по адресу http://www.bio.pu.ru/cgi-bin/fr1.pl Всех благ!
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
|
|
|