prolog正确使用post参数

时间:2014-07-13 08:12:17

标签: html post parameters prolog swi-prolog

我想创建一个动态问题网站,有一些滚动,检查和任何框。 用户发送表单后,我想使用信息,动态创建答案。我尝试了很多,但无法让它正常工作。 所以我希望,你可以帮忙。

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和成员(方法(帖子),请求)......,但无法使其工作。 如何在网站上打印所有这些参数?

1 个答案:

答案 0 :(得分:0)

参见例如http://www.swi-prolog.org/howto/http/HTMLParams.html以获取处理参数的示例。谓词http_parameters / 3处理GET请求和POST请求,前提是发布的内容被编码为www-form-encoded(这是浏览器为表单设置的方法=" POST") 。您不需要member(method(post), Request),除非您真的希望处理程序仅适用于POST请求。默认情况下,它适用于两者。