【问题标题】:redirect to html from cgi once the page is fully written页面完全写入后,从 cgi 重定向到 html
【发布时间】:2012-07-02 12:32:22
【问题描述】:

我搜索了一个与我类似的案例,发现相关帖子很少,但没有一个可以回答我的问题。

我正在执行的 cgi 脚本正在处理一些数字,最后吐出一个 html 文件。我正在控制此 html 文件的位置,并在成功提交 html 表单后显示的临时网站上为其提供 url。

输出的html是瞬间创建的,或者说不是瞬间创建的。

有没有办法在我的临时 cgi 页面中检查 html 是否已完全编写,然后自动重定向到它?如果页面尚未准备好,我希望用户留在当前页面上。

目前在我的临时 cgi 页面上,我显示“检查”和“终止”按钮,您可以在其中检查状态/终止它。当单击“检查”并且网站准备就绪时,我会重定向到它。 此外,我会显示一个指向 html 文件的 url,您可以访问该文件,但如果立即执行,则只会显示页面的一个片段。

我希望刷新/重定向是自动的,这样用户就不必点击任何东西。

我在其他地方看到了“尝试加载已知的小图像并检测加载是否完成”的想法:

<img src="http://www.example.com/image.jpg"
  onload="window.location='http://www.example.com';"
  onerror="window.location='#';">

我喜欢这样,但它并不完美。我的临时 cgi 页面不会在不提交表单的情况下将 URL 进一步传递给结果 html(这里没有 GET,没有 POST,因为没有使用表单)。再次,我希望重定向尽可能自动。

总结一下:如何从使用 CGI.pm 生成的页面中检查外部 html 页面是否已准备好被重定向到? DWR (http://directwebremoting.org) 是唯一的解决方案吗?

我很乐意接受一些 JavaScript 解决方案。

编辑:

我在初始表单提交后立即开始写入结果页面,并不断添加。 由于页面从一开始就存在(但不完整),因此检查非 404 响应(然后重定向)是相当不容易/可能的。

【问题讨论】:

    标签: javascript html perl dwr


    【解决方案1】:

    由于您控制结果 HTML 的编写,我假设从 CGI 生成的页面和静态结果都在同一个域上。在“等待”页面上设置一个使用.setInterval 定期调用的函数,该函数将尝试使用 AJAX 请求结果页面,并且一旦您收到非 404 响应,将window.location 设置为结果页面。还为用户提供一些视觉指示/分散注意力,这样他们就不会认为自己卡住了。

    当你生成你的结果页面时,你应该先用一些临时文件名保存它,然后在完成后将它重命名为最终名称,这样它就不会在完成之前出现在预期的地址。

    【讨论】:

    • 使用像 jQuery 这样的 js 框架会使这项任务变得非常简单。
    • 我想是的。不过,我对 JavaScript 不是很流利。我会试一试,除非你有一些我可以扩展的简单骨架。
    • @Oleg V. Volkov 请看我编辑。您现在将如何处理?
    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2012-10-15
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多