3

这可能有点啰嗦,但这真的让我和其他几个人感到困惑。

我们有一个在文件上传期间更新的进度条。JS 在这里(太多无法粘贴到这个正文中)。

基本上,表单提交事件会启动一个计时器循环,该循环每 2 秒触发一次 $.getJSON() 对服务器的调用,以检索关于上传状态的一对值。然后将这些值传递给更新进度条的函数。返回的 JSON 值是定义有效的 JSON。

现在,这段代码在 Firefox 和所有 IE(甚至 6 个)上运行良好,所以我非常有信心服务器端代码是健壮的,但是......在 Safari 和 Chrome 中,进度条根本不会更新.

上传由 Apache 很好地处理,并且 console.log() 调试显示计时器循环肯定正在运行 - 只是 getJSON 似乎没有被触发(网络检查员没有显示调用,Apache 也没有日志。

如前所述,这有点莫名其妙。以前有人用 Chrome/Safari/Webkit 遇到过这个问题吗?

4

2 回答 2

1

似乎 Chrome 的 JSON.parse barfs 在转义撇号上:

[ "barf\'" ]

虽然未转义的撇号工作正常:

[ "accept'" ]

我已经能够通过为基于 Webkit 的浏览器保留撇号不加引号来规避类似的问题。在你的情况下可能是类似的。

于 2011-08-18T09:13:53.213 回答
1

也许这个问题可以提供一些关于调试的想法。我发现 Safari 和 Chrome 在处理 JS 的方式上也存在一些问题,所以,你绝对不是一个人。

于 2010-07-18T02:51:59.003 回答