$ .getJSON для индикатора выполнения НЕ работает в Safari и Chrome (но хорошо в IE6 + и FF) - PullRequest
3 голосов
/ 15 июля 2010

Это, возможно, немного скучно, но это действительно сбивает с толку меня и пару других людей.

У нас есть индикатор выполнения, который обновляется во время загрузки файлов.JS здесь (слишком много для вставки в это тело).

По сути, событие отправки формы запускает цикл таймера, который каждые 2 секунды запускает вызов $ .getJSON ().на сервер, чтобы получить пару значений о статусе загрузки.Эти значения затем передаются в функцию, которая обновляет индикатор выполнения.Возвращаемыми значениями JSON являются def valid JSON.

Теперь этот код отлично работает на Firefox и всех IE (даже на 6), поэтому я вполне уверен, что код на стороне сервера является надежным, но ...в Safari и Chrome индикатор выполнения просто не обновляется вообще.

Загрузка обрабатывается Apache нормально, и отладка console.log () показывает, что цикл таймера определенно работает - просто, похоже, что getJSON не запускается (веб-инспекторы не показывают вызови ни один из них не ведет журнал Apache.

Как уже говорилось, это немного сбивает с толку. Кто-нибудь сталкивался с этим раньше с Chrome / Safari / Webkit?

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Кажется, что JSON.parse barfs в Chrome на экранированном апострофе:

[ "barf\'" ]

, в то время как апостроф без экранирования работает нормально:

[ "accept'" ]

Мне удалось обойти подобную проблему, оставивапостроф без кавычек для браузеров на основе Webkit.Это может быть что-то подобное в вашем случае.

0 голосов
/ 18 июля 2010

Возможно этот вопрос может дать несколько идей об отладке. Я обнаружил, что и в Safari, и в Chrome есть проблемы с тем, как они справляются с JS, так что вы определенно не одиноки.

...