我正在制作一个 Delphi XE5 VCL 表单应用程序,并且有一个 TIdHTTPServer
在主表格和 CommandGet
的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
”来调用这个函数,该函数会生成一个包含学生类(class)和分数的 HTML 表。该函数从数据库中读取数据并生成一个表。我想避免重新加载整个页面(我尝试在 div 标签中插入表格)。
最佳答案
对于 部分页面刷新 ,您可以使用 JavaScript/Ajax,例如使用 jQuery 之类的框架。 Web 上有许多使用 Ajax 进行动态页面更新的示例。
Ajax 调用将请求作为 HTTP GET 或 POST 请求提交给 HTTP 服务器。 IdHTTPServerCommandGet 中的代码检查请求是否匹配 URL 和 HTTP 方法,然后构建并返回部分 HTML 代码。
在客户端,JavaScript 代码将接收到的部分 HTML 放置在指定的文档树位置。
参见例如:
https://stackoverflow.com/a/3644604/80901
更新:可以在 http://www.habariwebcomponents.de/demo/ajaxstats.html 找到基于 jQuery Ajax 的演示。与 Delphi source (基于我的 Delphi 和 Free Pascal 的 HTTP 服务库)
关于html - 如何调用 Delphi 程序来生成 HTML 页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580750/