Пролог правильно использовать параметр post

Я хочу создать динамический сайт с вопросами, с некоторыми полями прокрутки, проверки и тому подобного. После того, как пользователь отправил форму, я хочу использовать информацию, чтобы динамически создать ответ. Я очень старался, но не мог заставить его работать должным образом. Надеюсь, вы можете помочь.

get_event( 'Event_1', 1 ).
get_event( 'Event_2', 5).

get_component( 'Type_1', 'Component_1' ).
get_component( 'Type_2', 'Component_2' ).

get_incident( 'Incident_1' ).
get_incident( 'Incident_2' ).

index( Request ) :-
  reply_html_page(
    [
      title('Questions') 
    ],
    [
      form( [ id( search ), action(answer), method(post)], 
      [
        h1('All Questions'),
        div( [ h4('Question_1')
        |\selection ]),
        div( [ h4('Question_2') 
        |\component ]),
        div( [ h4('Question_3') 
        |\event ]),
        input( [ type( submit ), value( 'Submit' )])
      ])
    ]).

event -->
  { event( Ls ) },
  html( [ div( Ls )]).

event( Ls ) :-
  findall( span( [ input( [ value = Priority, name = Event, type = 'checkbox' ] ), Event ] ), get_event( Event, Priority ), Ls ).

component -->
  { component( Ls ) },
  html( [ div( Ls )]).

component( Ls ) :-
  findall( div( [ input( [ name = Component, value = [Type, ',', Component ], type = 'checkbox' ]), Component ]), get_component( Type, Component ), Ls ).

selection -->
  { selection( Ls ) },
  html( [ div( select( Ls ))]).

selection( Ls ) :-
  findall( option( [ name = Incident, value = Incident ], Incident ), get_incident(  Incident ), Ls ).

Теперь я хочу использовать эту информацию в качестве параметров публикации. Я нашел 2 решения, http_parameters/3 и с member( method(post), Request)..., но не смог заставить его работать. Как я могу распечатать все эти параметры на веб-сайте?

1 ответ

Решение

См., Например, http://www.swi-prolog.org/howto/http/HTMLParams.html для примера обработки параметров. Предикат http_parameters/3 обрабатывает как GET-запросы, так и POST-запросы, при условии, что размещенный контент кодируется как www-form-encoded (это то, что браузер делает для формы с method="POST"). Вам не нужен member(method(post), Request), если вы действительно не хотите, чтобы обработчик работал только для POST-запросов. По умолчанию это будет работать для обоих.

Другие вопросы по тегам