У меня проблема с передачей формы input type="hidden" с библиотекой CGI SWI-Prolog. В частности, я делаю:
<form id="frmCGIPrologIni" name="frmCGIPrologIni" method="post" action="http://localhost/cgi-bin/x.pl"> <p><input type="hidden" name="initial" value="ini" /> <input class="submit" type="submit" value="Start" /> </p></form>
когда программа x.pl вызывает cgi_get_form(Arguments)
Аргументы должны быть списком условий имени (значения), то есть: [имя, значение], поэтому он должен быть [initial (ini)].
но когда я использую это, он говорит: ОШИБКА: =../2: аргументы недостаточно конкретизированы
print_args([]).
print_args([F|T]) :- % with Arguments
F =.. [Name, Value], % and should continue doing things
Я попытался напечатать его вручную с помощью записи (аргументы), и я получаю: _L160
, а печать первого элемента: _G472
и write_canonical (аргументы) возвращает: '.'(_,_)
Я также пробовал использовать метод = "get" только для проверки, и он правильно печатает URI http://localhost/cgi-bin/x.pl?initial=ini
, поэтому я думаю, что проблема не в отправке, а в обработке с помощью cgi_get_form (аргументы).
При первом запуске http://localhost/cgi-bin/x.pl я делаю:
cgi_get_form(Arguments),
(Arguments = []) ->
(
format('<p>Print this as the index.</p>~n', []),
) ; true, % and it works well because there are no Arguments the first time
write('<p>'), write(Arguments), write('</p>'), nl, % and print other things
Проблема во второй раз. На этот раз при вызове той же программы есть аргументы, поэтому она не печатает сообщение, до сих пор все в порядке. Затем проходит через true и продолжается. Вот когда я пытаюсь написать (Аргументы) с результатами, объясненными ранее (_L160
). И результатами должны быть данные, переданные формой.
есть мысли в чем проблема?