Получены ошибки при использовании XMLHttpRequest [дубликат]

Для путинского пути здесь добавьте мой ответ:

res = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))
res = res.append([{'qty1':10.0}], ignore_index=True)
print(res.head())

   lib  qty1  qty2
0  NaN  10.0   NaN
837
задан Shog9 22 November 2009 в 20:25
поделиться

14 ответов

Секция CDATA требуется, если вам нужен документ для анализа в формате XML (например, когда страница XHTML интерпретируется как XML) , и вы хотите иметь возможность писать литералы i<10 и a && b вместо i&lt;10 и a &amp;&amp; b , поскольку XHTML будет анализировать код JavaScript как проанализированные символьные данные, а не по умолчанию. Это не проблема со сценариями, которые хранятся во внешних исходных файлах, но для любого встроенного JavaScript в XHTML вы , вероятно, хотите использовать раздел CDATA.

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

Для хорошей записи по этому вопросу см. http://javascript.about.com/library/ blxhtml.htm

551
ответ дан Robin Winslow 24 August 2018 в 07:13
поделиться
  • 1
    Это намного больше, чем просто «валидация». Самые строгие синтаксические анализаторы XML не будут проходить страницу, если они попадут в незаконный символ. Это больше, чем просто сделать W3C счастливым и стать зеленым, а не красным. – Loren Segal 15 September 2008 в 21:58
  • 2
    Если вы избегаете символов & и <, вам не нужен раздел CDATA; он будет хорошо работать как в HTML, так и в XHTML. Вы можете легко достичь этого, поместив весь значительный код во внешние скрипты и просто используя встроенные скрипты, например. инициализировать переменные (экранирование & / < до \x26 / \x3C в строковых литералах, если вам нужно). – bobince 20 September 2009 в 10:10
  • 3
    Как насчет HTML5? – Mathew Attlee 2 December 2009 в 12:44
  • 4
    @Mathew Attle - это хороший вопрос. Будьте здорово задавать вопрос в отдельном потоке, чтобы обеспечить ему необходимое внимание. – Alex KeySmith 6 November 2010 в 20:01
  • 5
    html5 не xhtml, слава богу, так что это не понадобится – Neil McGuigan 22 July 2011 в 06:07

HTML

Парсер HTML будет обрабатывать все между <script> и </script> как часть скрипта. Некоторым реализациям даже не нужен правильный закрывающий тег; они останавливают интерпретацию сценария на «</», что верно в соответствии со спецификациями .

Обновление В HTML5 и с текущими браузерами это уже не так.

Итак, в HTML это не :

<script>
var x = '</script>';
alert(x)
</script>

Раздел CDATA не имеет никакого эффекта. Вот почему вам нужно написать

var x = '<' + '/script>'; // or
var x = '<\/script>';

или аналогичный.

Это также относится к файлам XHTML, которые используются как text/html. (Поскольку IE не поддерживает типы содержимого XML, это в основном верно.)

XML

В XML применяются разные правила. Обратите внимание, что (не IE) браузеры используют только синтаксический анализатор XML, если XHMTL-документ обслуживается типом содержимого XML.

Для анализатора XML тег script не лучше, чем любой другой тег. В частности, узел сценария может содержать нетекстовые дочерние узлы, инициируемые «<»; и знак «&» обозначает объект символа.

Таким образом, в XHTML это не возможно:

<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>

Чтобы обойти это, вы можете обернуть весь скрипт в секции CDATA. Это говорит синтаксическому анализатору: «В этом разделе не обрабатывайте« < »и« & »в качестве управляющих символов. Чтобы механизм JavaScript не интерпретировал метки «<![CDATA[» и «]]>», вы можете их обернуть комментариями.

Если ваш скрипт не содержит никаких «<» или «& ", вам все равно не нужен раздел CDATA.

117
ответ дан Ayo K 24 August 2018 в 07:13
поделиться
  • 1
    Утверждение «Раздел CDATA не имеет никакого эффекта» не соответствует (предлагаемому) HTML5, который распознает конструкцию. w3.org/TR/html5/syntax.html#cdata-sections – danorton 6 March 2012 в 22:29
  • 2
    @danorton Интересно. Я думаю, что это довольно уродливая смесь. Тем не менее, никакого эффекта в содержимом скрипта. – user123444555621 7 March 2012 в 00:06
  • 3
    Ах, верно. CDATA недействителен в & lt; script & gt ;. – danorton 7 March 2012 в 01:04
  • 4
    Не знал, что теги any </ внутри скрипта плохие. – Salman A 5 March 2013 в 20:38
  • 5
    @SalmanA Это одна из странностей HTML и официально называется ETAGO . Подробнее: mathiasbynens.be/notes/etago (в статье говорится, что ни один браузер никогда не реализовал эту функцию, я уверен, что это вызвало некоторые проблемы для меня. Возможно, в каком-то другом инструменте) – user123444555621 5 March 2013 в 22:35

В принципе, это позволяет написать документ, который является как XHTML, так и HTML. Проблема в том, что в XHTML анализатор XML будет интерпретировать символы & amp;, & lt;,> в теге script и вызывать ошибку синтаксического анализа XML. Таким образом, вы можете написать свой JavaScript с объектами, например :

if (a &gt; b) alert('hello world');

Но это нецелесообразно. Большая проблема заключается в том, что если вы читаете страницу в HTML, скрипт считается по умолчанию CDATA], и такой JavaScript не будет работать. Поэтому, если вы хотите, чтобы одна и та же страница была в порядке, используя синтаксические анализаторы XHTML и HTML, вам необходимо заключить тег script в элемент CDATA в XHTML, но НЕ прилагать его в HTML.

Этот трюк обозначает начало элемента CDATA в качестве комментария JavaScript; в HTML парсер JavaScript игнорирует тег CDATA (это комментарий). В XHTML анализатор XML (который запускается перед JavaScript) обнаруживает его и обрабатывает остальные до конца CDATA как CDATA.

29
ответ дан Chris Middleton 24 August 2018 в 07:13
поделиться

Когда вы собираетесь выполнять строгое соответствие XHTML, вам нужно, чтобы CDATA так меньше, и амперсанды не помечены как недопустимые символы.

9
ответ дан Chris Shaffer 24 August 2018 в 07:13
поделиться
5
ответ дан Community 24 August 2018 в 07:13
поделиться

Это вещь X (HT) ML. Когда вы используете символы, подобные < и > в JavaScript, например. для сравнения двух целых чисел это должно быть проанализировано как XML, поэтому они будут отмечать как начало или конец тега.

CDATA означает, что следующие строки (все до ]]> а не XML и, следовательно, не следует анализировать таким образом.

22
ответ дан Franz 24 August 2018 в 07:13
поделиться

, чтобы избежать ошибок xml во время проверки xhtml.

8
ответ дан gehsekky 24 August 2018 в 07:13
поделиться

CDATA сообщает браузеру отображать текст как есть, а не отображать его как HTML.

8
ответ дан Ikaso 24 August 2018 в 07:13
поделиться

Чтобы убедиться, что проверка XHTML работает правильно, когда у вас есть JavaScript, встроенный в вашу страницу, а не с внешней ссылкой.

XHTML требует, чтобы ваша страница строго соответствовала требованиям разметки XML. Поскольку JavaScript может содержать символы со специальным значением, вы должны обернуть их в CDATA, чтобы убедиться, что проверка не означает, что он неверен.

С HTML-страницами в Интернете вы можете просто включить требуется JavaScript между и тегами. Когда вы проверяете HTML на своей веб-странице, содержимое JavaScript считается CDATA (символьные данные), которое поэтому игнорируется валидатором. То же самое не верно, если вы следуете более поздним стандартам XHTML при настройке своей веб-страницы. С XHTML код между тегами скрипта считается PCDATA (анализируемые символьные данные), который поэтому обрабатывается валидатором.

Из-за этого вы не можете просто включать JavaScript между тегами сценария на своем страницы без «взлома» вашей веб-страницы (по крайней мере, насколько это касается валидатора).

Вы можете узнать подробнее о CDATA здесь и подробнее о XHTML здесь .

16
ответ дан informatik01 24 August 2018 в 07:13
поделиться

CDATA указывает, что содержимое внутри не является XML.

6
ответ дан Jim 24 August 2018 в 07:13
поделиться

Используйте not использовать CDATA в HTML4, но вы должны использовать CDATA в XHTML, а должны использовать CDATA в XML, если у вас есть неэкранированные символы типа & lt; ; и>.

16
ответ дан Loren Segal 24 August 2018 в 07:13
поделиться
  • 1
    Почему не в HTML4? – Robert Claypool 27 August 2010 в 20:02
  • 2
    CDATA недействителен в HTML4. Проще говоря, это не часть грамматики. CDATA - это синтаксис XML, а XHTML - подмножество XML. Поэтому его следует использовать только внутри XML (и его подмножеств). HTML, с другой стороны, не XML. – Loren Segal 30 August 2010 в 04:59

Когда браузер обрабатывает разметку как XML:

<script>
<![CDATA[
    ...code...
]]>
</script>

Когда браузер обрабатывает разметку как HTML:

<script>
    ...code...
</script>

Когда браузер обрабатывает разметку как HTML, и вы хотите, чтобы XHTML 1.0 (например) для проверки.

<script>
//<![CDATA[
    ...code...
//]]>
</script>
224
ответ дан Shadow2531 24 August 2018 в 07:13
поделиться
  • 1
    +1 для того, чтобы быть кратким с прецедентами. – Levi Morrison 7 November 2011 в 23:07
  • 2
    Так же, как вопрос безопасности кода, лучше объединить ваши CDATA с комментариями блока /* ... */, поскольку в противном случае, если разрывы строк будут удалены, код сломается – BryanH 3 November 2015 в 21:05
  • 3
    @BryanH Действительно. – Shadow2531 4 November 2015 в 04:22
  • 4
    не должен & quot; ... как XML & quot; в первом разделе будет «... как не интерпретируемый текст»? В stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean мы видим «... эти строки включают данные, которые могли бы интерпретироваться как Разметка XML, но не должна быть. & Quot; – matt wilkie 31 January 2017 в 21:38
  • 5
    @mattwilkie, Что я имею в виду под «как XML»? «Когда браузеры используют свой синтаксический анализатор XML (в отличие от анализатора HTML) для разбора разметки, поскольку документ был отправлен с типом MIM на основе XML, или файл, содержащий разметку, имеет расширение файла на основе XML». – Shadow2531 1 February 2017 в 13:07

Таким образом, старый браузер не анализирует Javascript-код, и страница не прерывается.

Обратная совместимость. Должен любить это.

2
ответ дан Tyler Carter 24 August 2018 в 07:13
поделиться

CDATA указывает, что содержимое внутри не является XML.

Вот объяснение в wikipedia

9
ответ дан user65439 24 August 2018 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: