我有一个静态HTML页面,其中包含第二个HTML页面,通过(Apache)include virtual
。
第二页也是静态的,除了它通过服务器中的include包含HTML select
的内容:
<select id = "idListOpts" class="form-control input-md" size = 1>
<!--#include virtual="/cgi-bin/listopts" -->
</select>
这很好,除了listopts
脚本(实际编译的C ++)是动态的,并从更改的数据库返回内容。问题在于我无法说服浏览器(FF 27,Chrome,Opera,IE9)select
实际上是动态的。我已经尝试在no-cache
标题中返回各种listopts
指令,而我目前正在使用:
"Status: 200 OK\n"
"Pragma: no-cache\n"
"Cache-Control: no-cache\n"
"Cache-Control: max-age=0\n"
"Content-Type: text/html\n\n"
"<option value=\"-1\">...etc"
据我所知,使用Firebug时,整个HTML页面(包括所有虚拟包含)仅在手动刷新页面时加载一次,select
内容仅在此时获取,并且包含在静态列表中。这似乎不是Apache文档所说的。 docs表示只能动态生成页面的一部分时才能使用SSI。
任何想法如何解决这个问题,缺少JavaScript / Ajax?
答案 0 :(得分:0)
根据所使用的Apache HTTPd的版本,尝试使用exec
element并将cgi
属性设置为脚本。 NB,它需要启用mod_cgi
,但我认为这已经到位。
例如:
<!--#exec cgi="/cgi/listopts" -->
如果这不起作用,我会调试你的C ++程序并检查它是否保证在每个请求上返回新数据。如果你还没有尝试过,我会使用strace
或等效的探测应用程序来检查对listopts
程序的调用,并检查它返回的响应。