PHP XML IE проблема - PullRequest
       44

PHP XML IE проблема

2 голосов
/ 22 июня 2009
<?xml version="1.0" ?> 
<NBR>
    <resultGroups>
    <result>Hello</result> 
    </resultGroups>
</NBR>

У меня есть nml, созданный на PHP, как это. я перезапускаю этот XML в javascript и пытаюсь получить доступ к значению узла "result", используя

alert($(xmlObj).children('result').text()); 

В Firefox работает нормально. но в IE ничего не выдает ...

как я могу решить это ???

Ответы [ 6 ]

1 голос
/ 08 сентября 2009

Убедитесь, что вы указали в своих заголовках Content-Type и charset и что ваша кодировка (если используется utf-8) имеет значение utf-8 и не utf8 . IE не распознает последнее и не удосуживается сообщить вам.

Итак, вы хотите, чтобы в вашем заголовке было указано следующее:

Content-Type: application/xml; charset=utf-8
1 голос
/ 08 июля 2009

Вы загружаете это через SSL?

Существует известная проблема в IE, когда иногда не удается загрузить XML через SSL:

http://support.microsoft.com/default.aspx?scid=kb;en-us;272359

На этой странице содержится дополнительная информация о том, как ее решить:

http://www.blog.lessrain.com/flash-nasty-xml-load-bug-in-internet-explorer/

1 голос
/ 22 июня 2009

Полагаю, это как-то связано с функцией text () . Я сам Prototype, но недавно столкнулся с аналогичной проблемой IE. Он пришел от меня, пытаясь извлечь значение textContent из элемента в DOM. Я мог получить значение во всех других браузерах, но IE давал мне шанс. После нескольких тестов я пришел к следующему:

IE не поддерживает element.textContent . В большинстве браузеров, таких как FireFox, вы можете извлечь значение textContent из element .

Пример

<p id="my_element">this is my element</p>
alert($('my_element').textContent); // will alert "this is my element"

В IE вам нужно использовать element.innerHTML . Это вернет значение, которое вы хотите. Сейчас я предполагаю, что text () возвращает значение textContent , и поэтому вы не получаете кубиков.

Пример * +1029 *

<p id="my_element">this is my element</p>
alert($('my_element').innerHTML); // will alert "this is my element"

Надеюсь, это поможет!

1 голос
/ 22 июня 2009

Возможно, вы не отправляете правильный заголовок XML Content-Type. Вы должны отправить Content-Type: text/xml с содержимым XML. Вам также следует убедиться, что вы установили правильную кодировку как в заголовках, так и в файле. IE должен уметь правильно анализировать правильный ответ XML, если код JS правильный и ваш ответ XML правильный.

0 голосов
/ 08 июля 2009

Если находится внутри , попробуйте:

alert($(xmlObj).children('resultGroups').children('result').text());

или вы можете попробовать:

alert($($($(xmlObj).children('resultGroups')).children('result')).text());

или даже:

alert($($(xmlObj).children('result')).text());

Дайте мне знать, если какая-либо из этих работ.

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

Пытались ли вы проанализировать данные перед тем, как их оповестить, и, возможно, вместо этого использовать find?

var node_text = $(xmlObj).find('result').text();
alert(node_text);

В противном случае я бы предложил изменить тег результата на что-то другое (например, theresult ) - все знают, что IE любит делать странные вещи! :)

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