Safari не разрешает запросы AJAX после отправки формы? - PullRequest
9 голосов
/ 04 июня 2009

Я пишу индикатор загрузки на основе Javascript. Я хочу использовать стандартный метод многоэлементной отправки (вместо отправки файла в iframe). Во время отправки я отправляю ajax-запросы, которые возвращают% завершения загрузки, а затем соответствующим образом обновляет индикатор выполнения.

В FireFox & IE все работает гладко. Тем не менее, Safari, похоже, препятствует выполнению запросов ajax после отправки основной формы. В отладчике я вижу заголовки запроса, но кажется, что ответ так и не был получен.

Кто-нибудь знает об этом, или как обойти это?

Ответы [ 4 ]

3 голосов
/ 19 октября 2009

Это ошибка WebKit. Смотри https://bugs.webkit.org/show_bug.cgi?id=23933

3 голосов
/ 16 июня 2009

Да, именно так ведут себя Safari и любой браузер на основе WebKit (т.е. Google Chrome). Я недавно столкнулся с этим на индикаторе прогресса загрузки файла. В итоге я использовал ту же технику, что и на http://drogomir.com/blog/2008/6/30/upload-progress-script-with-safari-support, чтобы заставить работать ajax. В моем случае я не хотел менять внешний вид моего приложения на тот, который использует Дрогомир, но сам метод работал. По сути, решение состоит в том, чтобы создать скрытый iframe только в Safari, который загружает jQuery и ваш AJAX-скрипт. Затем верхний фрейм вызывает функцию в этом фрейме при отправке формы. Все остальные браузеры по-прежнему работают так же, как и раньше.

2 голосов
/ 06 июня 2009

Используете ли вы iframe для отправки формы? Я предполагаю, что после отправки формы страница переходит в состояние, когда больше нельзя вносить изменения в DOM.

Проверьте учебник, например , этот для получения дополнительной информации.

0 голосов
/ 06 июня 2009

Для меня это звучит как правильное поведение - и я удивлен, что Firefox и IE ведут себя иначе.

Это похоже на то, что вы пытаетесь покинуть страницу, а страница все еще взаимодействует с вами - звучит непослушно!

Я понимаю, почему это будет полезно - но я надеюсь, что это будет иметь место только в том случае, если вы выполняете POST для URI, к которому у вас есть доступ, или в худшем случае для того же домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...