Получить html-код в json-объекте из php с помощью core-ajax в Polymer

Я хочу вернуть данные с помощью json из php-скрипта. Данные содержат html-теги, но когда я пытаюсь использовать данные как html, я вижу «теги».

HTML-tags will be displayed as: <h1>hello</h1> and not:

привет

Я использую тег <core-ajax> в Polymer

<core-ajax id="ajax" auto url="php/directory_json.php" on-core-response="{{docsLoaded}}" handleAs="json"></core-ajax>

Javascript

var template = document.querySelector('template[is="auto-binding"]');
var docs = []
template.docsLoaded = function() {
    this.docs = this.$.ajax.response.slice(0);
}

HTML

<template repeat="{{doc in docs}}"><div>{{doc.content}}</div></template>

PHP

$my_html = array(array('uid'=>'0', 'content'=>'<h1>hello</h1>'));
echo json_encode($my_html);

Любая помощь будет оценена

Редактировать: кажется, что вы не можете просто вывести переменную с html-кодом. Вам нужно применить его в элементе с innerHTML() ($.html() с jquery).

Теперь я наткнулся на другую проблему, я не могу нацелить свой элемент с его идентификатором, он говорит «неопределенный».

HTML

<template repeat="{{doc in docs}}">
    <div id="div-content-"{{doc.uid}}></div>
    {{myfunction(doc.uid, doc.content)}}
</template>

JavaScript

myfunction = function(id, content){
    $('#div-content-'+id).html(content);
}

Кажется, что элемент не «применяется» к html, пока весь цикл не будет завершен? Любая идея о том, как этого добиться?


person wirlez    schedule 23.01.2015    source источник


Ответы (1)


вы можете использовать функцию htmlentities:

$my_html = array(array('uid'=>'0', 'content'=>htmlentities('<h1>hello</h1>')));

таким образом открыватель тега < станет &lt; и не будет интерпретироваться

person Mr.Manhattan    schedule 23.01.2015
comment
Проблема в том, что я хочу, чтобы тег html отображался как html! Это покажет мне только h1hello/h1 - person wirlez; 23.01.2015
comment
хм... может быть, это может помочь: stackoverflow.com/questions/21060890/ - person Mr.Manhattan; 23.01.2015
comment
Спасибо, вроде нельзя просто так выставить переменную с html-кодом. Вам нужно применить его в элементе либо с помощью $.html(), либо с помощью innerHTML(). К сожалению, у меня сейчас другая проблема, кажется, что элемент не определен, пока не завершится цикл. Поэтому, когда я пытаюсь добраться до своего элемента, он говорит, что он не определен:/ - person wirlez; 23.01.2015
comment
О том, когда я пытаюсь добраться до своего элемента, он говорит, что он не определен, я просто задал этот вопрос здесь: stackoverflow.com/questions/28116154/ - person Goce Ribeski; 23.01.2015