代码之家  ›  专栏  ›  技术社区  ›  Volomike nbk

如何从一个PHP脚本运行jquery异步多响应

  •  1
  • Volomike nbk  · 技术社区  · 16 年前

    我有一个run.php,上面有一个叫做“run”的按钮。单击它会对服务器上的response.php进行jquery$.get()ajax调用,并将结果发送到run.php的html中的javascript回调函数get response(sdata),以便在浏览器上显示。我想让response.php这样的东西在任务列表中运行,它用echo命令回送一个响应,并让getresponse在DIV移动时用这个状态更新它。所以,假设我在response.php中有5个步骤,因此有5个echo语句返回到getresponse()。

    我试着让它工作,但是发生的是jquery等待,然后一次发送一个单一的响应,而不是按照5个响应一起发送。

    技术是什么?

    我问的原因是我有一个脚本可以对一堆文件做一些事情。它做的第一件事是一个文件计数,所以它会更新我的进度条。然后,当它运行在文件中时,它需要像每1000个文件一样增加我的进度条。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Reigel Gallarde    16 年前

    我认为没有办法让Ajax调用在一个调用中有多个响应…但是我建议你在PHP上做一个会话…在任务功能的每个步骤中,更新会话…然后再进行一次Ajax调用,检查会话是否发生任何更新…如果有更新,那么做你必须做的……

        2
  •  0
  •   vava    16 年前

    由于XMLHttpRequest不能真正取得进展,我建议您可以研究其他执行Ajax调用的方法。其中一个是通过iframe。您可以创建隐藏的iframe,将其源代码设置为request.php,然后定期检查其内容。它应该是可能的,因为它都是同一个域,并且限制不适用。

    iframe可能会工作,因为它与普通浏览器窗口没有太大的不同,这意味着它会定期应用进入DOM的数据,即使请求尚未完成。不同的浏览器如何做到这一点可能存在问题,即只有当新内容超过4K或其他值时才显示新内容。但我敢肯定,这是有可能克服的。

    因此,创建新的隐藏iframe,将src-attibute添加到您的PHP脚本中,使该脚本定期地向客户机编写一些内容,并在客户机上检查所编写的内容,并将其转换为闪亮的GUI内容。

    推荐文章