Почему IE не распознает код JavaScript, возвращенный при вызове AJAX? - PullRequest
0 голосов
/ 02 декабря 2010

У меня (надеюсь) простой вопрос.

Я использую ajax для обновления DIV на моей текущей странице. Внутри элемента div находится блок скрипта, который определяет переменную. В FF я могу получить доступ к переменной, но IE не видит var. Нужно ли каким-то образом вычислять возвращаемый код, чтобы IE распознал переменную?

В качестве простого примера, если мой вызов ajax возвращает этот фрагмент кода и вставляется в div, я получаю предупреждение в FF, но не в IE:

предупреждение ( 'Foo!');

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Да, общий обходной путь - получить все элементы script, используя getElementsByTagName(), а затем eval() их.

1 голос
/ 02 декабря 2010

Возможно, проблема в вашем MIME-типе JavaScript - вы используете нетрадиционный тип (type = 'text / JavaScript'):

<script language='JavaScript' type='text/JavaScript'> alert('Foo!'); </script>

Вы должны попробовать это вместо:

<script type='text/javascript'> alert('Foo!'); </script>

Недавно я провел несколько тестов и обнаружил, что даже современные браузеры довольно требовательны к этому типу MIME (перейдите к дополнительному тесту № 1) и откажутся выполнять JavaScript, если он не установлен правильно: *

Если проблема не в этом, попробуйте добавить скрипт в документ Head:

document.getElementsByTagName('head')[0].appendChild(script);

Это то, что Google Analytics делала до недавнего времени, поэтому я был бы удивлен, если бы это не сработало для вас. Вам не нужно использовать eval ().

Согласно этой странице этой странице , IE требователен к узлам, которые еще не загружены, но почти наверняка загружен Head, поэтому у него не должно быть такой же проблемы.

1 голос
/ 02 декабря 2010

Вы должны вернуть объект JSON в результате вызова AJAX, а затем использовать Javascript-код json2.js, чтобы преобразовать его в живой объект.

http://json.org/ содержит ссылку на библиотеки JSON для всех известных человеку языков, включая Javascript.

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