Mootools:为啥 PHP 中的每个 flush() 都没有反映在 mootools 事件中的用户端

Posted

技术标签:

【中文标题】Mootools:为啥 PHP 中的每个 flush() 都没有反映在 mootools 事件中的用户端【英文标题】:Mootools: Why every flush() in PHP doesnt reflect at user side in mootools eventsMootools:为什么 PHP 中的每个 flush() 都没有反映在 mootools 事件中的用户端 【发布时间】:2011-06-23 09:33:36 【问题描述】:

我正在 mootools 中开发应用程序。有一些代码使用 Request 类向服务器发送请求。

req = new Request(
async: false, method: 'post',

someEvent: function(currentChunk) 
 /* this event is fired everytime when server flushes the output using flush()*/ ,

  onSuccess: function(html)  responseProcessor(); ,
  onFailure: function()  alert('Page Loading Failed ....!!'); ,
);

在服务器端,它执行一个 php 文件,我正在使用它刷新输出缓冲区 冲洗()。 但是在接收端,有一个 onSuccess 事件,它在一个变量中为我提供了整个 responseData。

每次服务器刷新输出缓冲区后是否会触发任何事件?

【问题讨论】:

【参考方案1】:

API 上记录了一个进度事件:http://mootools.net/docs/core/Request/Request

【讨论】:

我认为随着进步你无法做到这一点。显示静态资源的下载状态会很有用。而且它只有 Gecko 和 WebKit 支持(对我来说没问题,但如果他需要 IE 的东西怎么办:D) 你试过了吗?另外,您的问题中没有任何关于静态资源的内容,所以我对您要跟踪进度以及要跟踪什么感到困惑。 我没有问这个问题 :) @Vin 问了它.. 我只是想知道是否可以使用“progress”事件来实现 Vin 的要求:) 在 onProgress 事件中,它只能显示加载了多少以及它的 gunna 加载了多少,但直到那一刻才显示或给出加载的数据。 好的,所以我在某处读到了 IE 在完全加载之前不允许您访问内容。然后,您可以尝试侵入 mootools 并检索 XHR 的 responseText 属性。您可以谷歌“XMLHttpRequest readyState 3”以获取更多信息【参考方案2】:

onSuccess 回调将整个响应作为参数传递。如果您进行 AJAX 调用,它将作为响应返回如果您直接访问该脚本将在浏览器上呈现的所有内容。使用 mootools 请求,您无法显示输出的进度(刷新后无法调用事件)。我不知道是否有一个 moo 插件可以做这样的事情。

附言 我知道有一个 jQuery 插件可以为你做点什么 (Does PHP flush work with jQuerys ajax?)

【讨论】:

【参考方案3】:

我检查了从他的 anwser 中包含的链接steeb 中指出的 JQuery AJAX Http Stream 插件。

它所做的只是一个投票。您可以扩展 MooTools.Core.Request 类并创建一个 MooTools.Core.Request.Polling 类,该类将添加一些选项,例如轮询。

您需要实现“请求”事件(在发送请求之前触发)来设置轮询和完成事件来停止它。

【讨论】:

以上是关于Mootools:为啥 PHP 中的每个 flush() 都没有反映在 mootools 事件中的用户端的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 实时读取 PHP 数组的结果

使用 grep 或类似工具查找对 Dojo 和 Mootools 的调用

如何扩展本机mootools方法

Mootools将文件类型设置为在新窗口中打开

Mootools:如何将点击功能绑定到以编程方式生成的元素

在数组中查找字符串作为mootools中的值