进度条的$ .getJSON无法在Safari和Chrome中使用(但在IE6 +和FF中正常)

时间:2010-07-15 11:13:25

标签: jquery safari webkit google-chrome getjson

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

我们有一个在文件上传过程中更新的进度条。 JS是here(太多不能粘贴到这个主体中)。

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

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

上传由Apache处理,并且console.log()调试显示定时器循环肯定正在运行 - 这只是getJSON似乎没有被触发(web检查员不显示调用,也没有Apache登录。

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

2 个答案:

答案 0 :(得分:1)

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

[ "barf\'" ]

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

[ "accept'" ]

我已经能够通过使撇号不引用基于Webkit的浏览器来规避类似的问题。在你的情况下,它可能类似。

答案 1 :(得分:0)

也许this question可以提供一些有关调试的想法。我发现Safari和Chrome在处理JS的方式上也有点不对劲,所以,你绝对不是唯一的。