Функции Cgi Param('argument')

Тема в разделе "Perl программирование", создана пользователем AnaStas, 29 ноя 2008.

  1. AnaStas

    AnaStas Well-Known Member

    Регистрация:
    16 сен 2008
    Сообщения:
    52
    Симпатии:
    0
    Добрый день. Понимаю, что вопрос простой, но меня что-то зацыклило. Вот не сложный код:
    [codebox]...
    if(param('fromJS')){
    $server=param('fromJS');
    if ($server=~/^cr\,.+$/i){&Create_Modes}
    if ($server=~/^wr\,.+$/i){&mds_insert($server)}
    }
    else {
    ...
    }
    Скрытая HTML-форма[/codebox]
    При первом обращении к серверу скрипт отправляет в браузер стандартный HTTP код и пустое значение поля "fromJS" скрытой формы, поэтому выбор сабрутин не происходит и через else имеем продолжение загрузки главной страницы.
    Но вот пользователь создает события которые заполняют информацией поле fromJS и, соответственно, if выводит нас на выбор инициированной подпрограммы.
    Но по завершению ее работы, казалось бы, чего проще установить значение функции param('fromJS') в false и главная страница вновь загружена... однако, что-то никак не получается сделать ее вновь "пустой" и обойти выбор сабрутин.
    Подскажите, чего я тут недопонимаю.
     
  2. Vovochka

    Vovochka Гость

    Это я тут недопонимаю.
    Это все во время одного и того же запроса? Если после обработки данных вам надо вывести опять гл. страницу, дак уберите else.

    А если это разные запросы, дак вы гляньте, где повторно отправляется этот 'fromJS'. Вы форму точно не гетом отдаете?
    Как-то же к вам приходит второй раз fromJS

    А уж касательно обнуления param('fromJS'), это совершенно не нужно.
     
  3. AnaStas

    AnaStas Well-Known Member

    Регистрация:
    16 сен 2008
    Сообщения:
    52
    Симпатии:
    0
    Спасибо за консультацию. else убрал, правда алгоритм немного видоизменился и стал:
    Код (Text):
    ........
    my ($server)=param('fromJS'); # пришлось через elsif организовывать структуру выбора
    if ($server eq ""){&All_Modes}
    elsif ($server=~/^cr\,.+$/i){&Create_Modes}
    elsif ($server=~/^wr\,.+$/i){&mds_insert($server)}
    ........
    #== Скрытая форма для передачи данных на сервер =======
    print "
    <form name=\"TransData\" style=\"display:none\" method=\"post\">
    <input type=\"text\" name=\"fromJS\">
    </form>\n";
    .......
    Тему можно считать закрытой, только небольшой вопросик-ремарка:
    Исходя из того, что у нас с Вами получилось следует-ли понимать работу функции param('string') так:
    1. возвращаемое значение функции всегда true / false взависимости - определен аргумент или нет и оператор условия будет иметь вид if (param('string');
    2. но когда аргумент определен возвращаемым значением всегда будет true, если if (param('string'), или true / false взависимости от расформатированного значения string если if ((param('string') <оператор сравнения> <значение выбранное из string или "">).
    Все-ли здесь корректно в таком понимании функции param('string')?
    P.S.
    Главный "посоветовал" не плодить страницы, а, по возможности, сосредоточиться на одном документе, отсюда такой код.
     
  4. Vovochka

    Vovochka Гость

    Плодите страницы. И отделяйте HTML от кода.
    Ничего не понял... Какие true/false... Функция возвращает значение переданного параметра и все.
     
Загрузка...

Поделиться этой страницей