【问题标题】:jquery to load PHP page whilst PHP page is runningjquery 在 PHP 页面运行时加载 PHP 页面
【发布时间】:2016-03-03 17:32:46
【问题描述】:

我有一个网站,它使用 eBay API 将所有内容加载到 eBay 以及其他所有内容。

主要文件是 PHP,它们只包含在一个文件中,在需要时调用脚本。

但是我现在要做的是创建一个简单的网站,该网站将被拆分为中间的一半包含指向脚本的链接,另一个是一个普通的空 div,它从 PHP 文件加载内容并将其显示在空分区。

由于 php 文件主要在循环上运行并且可以运行长达 5 分钟,我希望脚本能够在空 div 中回显它所做的事情。

在我正在使用的那一刻

while (@ob_end_flush());      
ob_implicit_flush(true);   

所以 PHP 脚本会在文件结尾之前输出回显,但是在使用时:

function loadScript() {
    $(".loading").load("load.php");
    Loaddelay = setTimeout('loadScript()',1000);
}
loadScript();

在每 1 秒重新加载文件并且什么都不显示的主索引文件中。因为脚本实际上无法运行。

我还有哪些其他选项可以动态更改 div 容器以使其包含正在运行的 PHP 脚本?

【问题讨论】:

  • 你试过使用 jQuery ajax 吗?
  • @StijnBernards $(".loading").load("load.php"); 是 jQuery ajax。
  • 可能想使用 web sockets 而不是 ajax
  • 我不认为 XMLHttpRequest 旨在处理部分下载。 AFAIK,你所能做的就是track progress
  • 我有一群网络套接字,但从未使用过它们。我是否正确地说我可以在运行时与代码交互?即有代码输出问题并让用户回答? @charlietfl

标签: javascript php jquery html


【解决方案1】:

如果信息不是机密或敏感信息,您可以做的一件事是将需要时间执行的脚本输出通过管道传输到一个文件,然后使用 jQuery.load() 从您的页面读取该文件。

所以你会:

  1. 定义一个服务器和页面的 JavaScript 都知道的会话变量(这将定义内容将输出到的文件名)
  2. 使用 jQuery.ajax() 开始执行长 PHP 脚本
  3. 像在当前脚本中所做的那样,以预定义的时间间隔读取文件(名称已在前面定义)
  4. 当您的长脚本结束时,请在文件末尾写入一些特殊字符,以便停止从客户端读取文件

请注意,如果用户要同时执行多个页面,则需要改进定义会话变量的方式

【讨论】:

    【解决方案2】:

    最后我意识到我实际上并不需要像以前那样使用 jQuery 来加载页面。

    我刚刚使用了一个放置在 div 中的 iframe。

    <a onclick="loadThis('page.php')">Do some thing</a>
    
    <script type="text/javascript">
    function loadThis(file) {
        $("myiframe").attr("src", file");
    }
    </script>
    

    它工作得很好,而且比预期的要好。不敢相信我忽略了使用 iframe。

    【讨论】:

      猜你喜欢
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多