jQuery从JSON String创建HTML

时间:2012-11-29 13:23:34

标签: php javascript jquery json

我有一个JSON-Object,其中包含以下示例条目:

description":"<div>- diversen Diskutanten- Moderiert vom gro\u00dfartigen PreibischDebatte, Gesprochenes, Kontroverses<div class="btn-group"><a class"btn" href=""><i class="icon-map-marker"><\/i><\/a><a class"btn" href=""><i class="icon-map-marker"><\/i><\/a><\/div><\/div>"

现在我正在尝试将此html添加到我的代码中的另一个元素:

$('#desc_text').empty();
$('#desc_text').html(event.description);
$('#description').modal('show');

问题是html没有被解析为html,我认为jquery .html()会这样做。我也试过了append(),但也没有改变。

有谁知道如何将其解析为html?

编辑2:整个工作流程,因为它似乎有点混乱:

我先做:

$events = json_encode($func->getAllDates());

该功能确实:

public function getAllDates() {
        $this->db->query('SELECT * FROM dates ORDER BY start');
        $result = $this->db->mysql_fetch_all();
        for($i = 0; $i < count($result); $i++) {
            $result[$i]['description'] = html_entity_decode(utf8_encode($result[$i]['description']));
        }
print_r($result);
        return $result;
    }

输出$ result in function:

[6] => Array
        (
            [id] => 17
            [title] => Sabotage Debatte: Politik im Keller
            [start] => 2012-11-29 00:00:00
            [end] => 2012-11-29 00:00:00
            [allDay] => 1
            [url] => 
            [description] => <div>- diversen Diskutanten- Moderiert vom großartigen PreibischDebatte, Gesprochenes, Kontroverses<div class="btn-group"><a class"btn" href=""><i class="icon-map-marker"></i></a><a class"btn" href=""><i class="icon-map-marker"></i></a></div></div>
        )

编辑:

正如评论中所说:引用似乎是答案,但我不引用自己,只使用php函数。也许我做的方式是错误的。

我的数据库中有这样的东西:

&amp;lt;div&amp;gt;- diversen Diskutanten- Moderiert vom großartigen PreibischDebatte, Gesprochenes, Kontroverses&amp;lt;div class=&amp;quot;btn-group&amp;quot;&amp;gt;&amp;lt;a class&amp;quot;btn&amp;quot; href=&amp;quot;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;icon-map-marker&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;a class&amp;quot;btn&amp;quot; href=&amp;quot;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;icon-map-marker&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;

然后我用

html_entity_decode(utf8_encode($result[$i]['description']));

将其关闭然后我使用json_encode将其放入json格式。不应该对这个函数做任何正确的引用吗?

我希望你能进入工作流程......

2 个答案:

答案 0 :(得分:2)

您的字符串包含必须转义的内部引号。此外,你有一些错误的属性,如class"btn"应该是class="btn"之后,它将正常工作。

// description with all internal double quotes escaped by \"
var event = {
    "description":"<div>- diversen Diskutanten- Moderiert vom gro\u00dfartigen PreibischDebatte, Gesprochenes, Kontroverses<div class=\"btn-group\"><a class=\"btn\" href=\"\"><i class=\"icon-map-marker\"><\/i><\/a><a class=\"btn\" href=\"\"><i class=\"icon-map-marker\"><\/i><\/a><\/div><\/div>"
    };
$('#desc_text').empty();
$('#desc_text').html(event.description);​

Here is an example on jsfiddle

OP评论后

更新:

由于您正在检索此值并解码实体(包括引号),因此您必须json_encode()生成正确的转义引号。

json_encode(html_entity_decode(utf8_encode($result[$i]['description'])));

或者更有可能的是,对来自的整个数组进行编码:

json_encode($your_database_row_array);

答案 1 :(得分:0)

可能你应该尝试:

document.getElementById('desc_text').innerHTML = unescape( event.description);