2014-01-29 2 views
2

У меня есть javascript engine (с использованием jquery), который должен отображать html, который поставляется в виде вывода с стороннего сервера (REST API). Ответ содержит простой текст и отдельные элементы html, такие как <b>, <p> <br> и т. Д., Которые я хочу отображать как вывод html. (а не буквально <b>, <p> и т. д.)Как визуализировать html с помощью javascript

Есть ли способ?

Вот что я делаю - в псевдокоде. Примечание. Я использую шаблон javascript blueimp для генерации кода.

jQuery.get({ 
    url: 'someRESTfulURL/id', 
    method: 'get', 
    success: function(resp) { 
     //resp contains html elements like <b> etc 
     var data = {title: resp.title, content: resp.content}; 
     $("#maindiv").html(tmpl("text-tmpl", data)); 
    } 
}); 

<script type="text/x-tmpl" id="text-tmpl"> 
    <h3>{%=o.title%}</h3> 
    <p>{%=o.content%}</p> 
</script> 

<html><body><div id='maindiv'></div></body></html> 

The javascript template кодирует HTML-символы и, следовательно, проблемы. Есть ли способ, которым я могу использовать этот шаблон и по-прежнему отображать html-символы.

+0

Пожалуйста, поделитесь своим кодом –

+5

Вы пробовали $ ('# yourelement'). Html (data); ?? – Yani

+0

Да, у меня есть. BUt Я думаю, что проблема лежит где-то, насколько я могу судить после копания. Вероятно, лежит шаблон, который я использую. – Supra

ответ

1

Вы должны предотвратить экранирование специальных символов HTML. Попробуйте следующее:

<script type="text/x-tmpl" id="text-tmpl"> 
    <h3>{%#o.title%}</h3> 
    <p>{%#o.content%}</p> 
</script> 

Разница только в «#» вместо «=».

3

Есть два способа вы можете сделать это с помощью JQuery:

  1. Первый, когда у вас есть данные ответа уже, то вы можете поместить его в элемент, как это:

    $("#myElement").html(myData); 
    
  2. во-вторых, вы можете загрузить данные непосредственно в элемент:

    $("#myElement").load("http://myurlgoeshere.com/webservice"); 
    
Смежные вопросы