【发布时间】:2010-01-07 17:04:43
【问题描述】:
我正在开发一个应用程序,该应用程序允许用户使用表单(POST 请求)发送文件,并在上传文件时执行一系列 GET 请求以收集有关上传状态的信息.
它在 IE 和 Firefox 中运行良好,但在 Chrome 和 Safari 中就不行了。
问题在于,即使在 XMLHttpRequest 对象上调用了 send(),也没有任何请求,如 Fiddler 中所示。
更具体地说,在表单的“提交”事件上放置一个事件处理程序,在窗口上放置一个超时函数调用:
window.setTimeout(startPolling, 10);
在这个函数中,“startPolling”序列被启动,不断触发 GET 请求以接收来自 Web 服务的状态更新,该 Web 服务返回可用于更新 UI 的文本/json。
这是基于 WebKit 的浏览器的限制(也许是安全方面的限制?)?这是 Chrome 错误吗? (不过,我在 Safari 中看到了相同的行为)。
【问题讨论】:
-
我没听说过。其他基于 AJAX 的上传进度指示器在 Chrome 中对我来说工作正常。让我们再写一些代码/一个测试用例。
-
是否等待上一个轮询请求完成后再发送下一个?
-
确实如此。处理一个请求会触发下一个新的 setTimeout。不过,除了 POST,没有人会出去。
标签: javascript ajax google-chrome