如何使用Jquery / Javascript自动完成解码HTML实体

时间:2015-10-14 18:47:03

标签: javascript php jquery html

我有一个自动完成的脚本,它使用php / jquery从数据库中检索信息。

<script type="text/javascript">
        $(function() {
            var availableTags = <?php include('autocomplete.php'); ?>;
            $("#artist_name").autocomplete({
                source: availableTags,
                autoFocus:true
            });
        });
    </script>

我遇到的问题是显示html字符“é”,“&amp;”和“ó”以&eacute; &amp;&eacute;

的形式存储在数据库中

我无法获取javascript代码来显示用户选择的html字符。

如果我将html实体更改为数据库中的特殊字符,则自动完成脚本将完全停止工作。

我在Stackoverflow上找到了这个可能的解决方案,但我不知道如何在我自己完成的javascript中实现它,或者它是否能解决我的问题。

<script>
    function htmlDecode(input){
        var e = document.createElement('div');
        e.innerHTML = input;
        return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
    }
    htmlDecode("&lt;img src='myimage.jpg'&gt;"); 
    // returns "<img src='myimage.jpg'>"
</script>

我不精通javascript编码。如何解码自动完成脚本中的html实体。请帮忙。感谢。

Autocomplete.php代码:

    <?php
$connection = mysqli_connect("localhost","root","root","database_name") or die("Error " . mysqli_error($connection));

//fetch artist names from the artist table
$sql = "select artist_name from artist_names";
$result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));

$dname_list = array();
while($row = mysqli_fetch_array($result))
{
    $dname_list[] = $row['artist_name'];
}
echo json_encode($dname_list);
?>

1 个答案:

答案 0 :(得分:0)

请选择其中一种(但不是两者

PHP解决方案:

如果要解码html实体,可以先在<body onload="resetSelection()"> <select id="countrySelect" size="1" onchange="makeSubmenu(this.value)"> <option></option> <option>USA</option> <option>Singapore</option> <option>India</option> </select> <select id="citySelect" size="1"> <option></option> </select> </body>中使用php的内置html_​entity_​decode()函数:

autocomplete.php

JS解决方案:

看看jQueryUI's doc,您可以使用它来构建自己的$dname_list = array(); while($row = mysqli_fetch_array($result)) { $dname_list[] = html_​entity_​decode($row['artist_name']); } echo json_encode($dname_list); 元素,这样就可以了:

<li>