Internet Explorer перехватывает ответ XML - PullRequest
7 голосов
/ 14 февраля 2012

У меня есть форма, цель которой - iframe.

При отправке формы ответом является XML, и у меня есть Javascript, который анализирует ответ.

Я заметил, что при работе в IE IE перехватывает ответ и обрабатывает его как канал RSS, поэтому мой код никогда не получает ответ. Если я отключу RSS-каналы (из интернет-меню, вкладки контента), все будет нормально.

Я установил тип содержимого ответа «text / xml; charset = UTF-8 ”, но все равно не работает.

Есть ли обходной путь?

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Лучший обходной путь - не использовать iframe в этом случае. Похоже, что IE ловит http-ответ и читает его самостоятельно. Есть ли причина, по которой вы не делаете AJAX-вызов для получения информации? Похоже, вы все равно используете JavaScript для обработки ответа, поэтому я думаю, что использование объекта XMLHttpRequest было бы лучше для вас: http://www.w3.org/TR/XMLHttpRequest/

Если это слишком сложно, посмотрите на библиотеку, такую ​​как jQuery: http://jquery.com/, которая имеет встроенные (и гораздо более простые) функции для выполнения вызовов AJAX и обработки ответов.

Чтобы расширить это, вы должны связать функцию отправки формы с функцией JS (или использовать jQuery для этого) и получить данные формы, отправить их в запросе AJAX и обработать ответ. jQuery имеет встроенную функцию serialize (), которая предназначена для преобразования данных формы на странице в информацию, готовую для использования в функции ajax () для отправки на сервер. Если вы не знакомы с объектом XMLHttpRequest, я настоятельно рекомендую использовать для этой задачи такую ​​библиотеку, как jQuery.

1 голос
/ 29 апреля 2012

ОК, обнаружена проблема ... Мой ответ XML содержит теги ОБРАТНОЙ СВЯЗИ.IE рассматривает эти теги как RSS-каналы.Изменение имени тега на FDBACK решает эту проблему…

MS, почему это не задокументировано ???

0 голосов
/ 14 февраля 2012

Да, также убедитесь, что файл выводится с правильным расположением содержимого с использованием заголовков, чтобы IE получал "response.xml", а не "response.php" или что-то подобное ...

Контент-распоряжение: вложение;filename = "response.xml" '

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