用html字符返回json字符串?

ajs*_*sie 0 php ajax jquery json

我想用jquery ajax调用一个php来执行一些数据库事务,然后返回2个链接列表.所以我必须将这两个链接列表传递回jquery,这样它才能显示网页左侧的列表1和右侧的列表2.

我在单独的数组中创建了列表,我用json_encode发送回jquery,但我注意到它逃脱了所有的html字符.

<a>dog</a> became <a>dog<\/a>
Run Code Online (Sandbox Code Playgroud)

所以,当我在html中显示列表时,他们不再是链接了.

如何将我返回的数组中的html代码保存到jquery?

编辑:如果你想从PHP分割数据,以便jquery可以在html中的不同位置显示它们,这是正确的方法吗?

// list 1
while($row = mysqli_fetch_assoc($saved_tags))
{
    $display_saved_tags[] = "<a id='showtag' href='answer.php?id=" . $row['id'] . "'>" . $row['name'] . "</a><br />";
}

// list 2
while($row = mysqli_fetch_assoc($related_tags))
{
    $display_related_tags[] = "<a id='showtag' href='answer.php?id=" . $row['id'] . "'>" . $row['name'] . "</a><br />";
}

// return lists to jquery
echo json_encode('display_saved_tags' => $display_saved_tags, 'display_related_tags' => $display_related_tags));
Run Code Online (Sandbox Code Playgroud)

Cor*_*lou 6

json_encode的转义字符直接与HTML输出冲突.我遇到了同样的问题,但当时决定使用替代解决方案.我只是想到你也许可以这样做:

$data = new stdClass();
$data->html1 = base64_encode('<h1>html in here</h1>');
$data->html2 = base64_encode('<p><strong>more html</strong></p>');
echo json_encode($data);
Run Code Online (Sandbox Code Playgroud)

在前端:

callbackFunction(json) {
    alert(base64_decode(json.html1));
    alert(base64_decode(json.html2));
}
Run Code Online (Sandbox Code Playgroud)

你需要base64_decode和utf8_decode的javascript实现,可以在以下网址找到:http://phpjs.org/functions/base64_decode:357