2011-12-17 3 views
2

У меня есть страница, которая работает как загрузчик AJAX, используя jQuery. Он извлекает XML-документы, как этот, и вставляет значения title, authPhrase и content в соответствующие div s на отображаемой странице.jQuery strips теги от XML

<?xml version="1.0" encoding="utf-8"?> 
<tinglePage> 
    <title>Home</title> 
    <authPhrase>welcome, Jashank<br /><a href="/tingle/auth/logout">logout</a></authPhrase> 
    <content> 
    <p>There are <strong>two</strong> types of folks who sit around 
    thinking about how to kill people: <em>psychopaths</em> and 
    <em>mystery writers</em>. I'm the kind who pays better.</p> 
    </content> 
</tinglePage> 

Когда я использую этот JavaScript, он удаляет теги из вставленного содержимого.

jQuery.get(path, {ajax: "true"}, function(xml) { 
     document.title = "Tingle :: " + $("title", xml).text(); 
     $(".pageTitle").html(
      $("title", xml).text() 
     ); 

     $(".authPhrase").html(
      $("authPhrase", xml).text() 
     ); 

     $(".content").html(
      $("content", xml).text() 
     ); 
    }); 

Есть ли способ вставить XML на отображаемую страницу без удаления содержимого?

ответ

2

Вы должны обернуть содержимое блоком CDATA. Таким образом, когда вы используете .text(), вы получаете весь контент с тегами html;

<?xml version="1.0" encoding="utf-8"?> 
<tinglePage> 
    <title>Home</title> 
    <authPhrase><![CDATA[welcome, Jashank<br /><a href="/tingle/auth/logout">logout</a>]]></authPhrase> 
    <content> 
    <![CDATA[<p>There are <strong>two</strong> types of folks who sit around 
    thinking about how to kill people: <em>psychopaths</em> and 
    <em>mystery writers</em>. I'm the kind who pays better.</p>]]> 
    </content> 
</tinglePage> 

Working example.

0

Метод .text() возвращает только символы (сохраняющие пробелы и html-объекты) между тегами html. метод .html() возвращает символы без дополнительной обработки; если моя память служит мне правильно :)

+0

В документации jQuery указано, что метод '.html()' не доступен для XML-документов ". Я пробовал и получаю сообщения об ошибках о несуществующем 'this.innerHTML'. – Jashank

+0

fudge, ну, я должен был знать, что вы попробуете этот ха-ха! – lol

Смежные вопросы