如何调用Delphi过程来生成HTML页面内容

时间:2014-05-10 11:56:11

标签: html sql delphi indy

我正在制作Delphi XE5 VCL表单应用程序,主表单上有一个TIdHTTPServerCommandGet程序的IdHTTPServer

procedure TForm1.IdHTTPServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var pageContent: TStringList;
begin
if pos('profile&userName=', ARequestInfo.UnparsedParams) > 0 then
   begin
      pageContent:= TStringList.Create;
      try
         pageContent.Add('<html>');
         pageContent.Add('<head>');
         pageContent.Add('<title>Profile</title>');
         pageContent.Add('</head>');
         pageContent.Add('<body>');
         pageContent.Add('<h1>Profile<h1>');
         pageContent.Add
            ('<input id="subjects" value="Subjects" type="button"/>');
         pageContent.Add('<div id="table-content">');
         pageContent.Add('</div>');
         pageContent.Add('</body>');
         pageContent.Add('</html>');
         AResponseInfo.ContentText := pageContent.Text;
      finally
         pageContent.Free;
      end;
  end;
end;

我想要做的是当用户点击“Subjects”按钮来调用此函数,该函数生成带有学生课程和标记的HTML表格。该函数从数据库中读取数据并生成表。我想避免重新加载整个页面(我尝试在div标签中插入表格)。

1 个答案:

答案 0 :(得分:3)

对于部分页面刷新,您可以使用JavaScript / Ajax,例如使用类似jQuery的框架。 Web上有许多使用Ajax进行动态页面更新的示例。

Ajax调用将请求作为HTTP GET或POST请求提交给HTTP服务器。 IdHTTPServerCommandGet中的代码检查请求是否与URL和HTTP方法匹配,然后构建并返回部分HTML代码。

在客户端,JavaScript代码将收到的部分HTML放在指定的文档树位置。

参见例如:

https://stackoverflow.com/a/3644604/80901

更新:基于jQuery Ajax的演示可以在http://www.habariwebcomponents.de/demo/ajaxstats.html Delphi source找到(基于我的Delphi和Free Pascal的HTTP服务库)