jQuery 自动完成未显示查询的所有结果

jQuery Autocomplete Not showing all results from query

我正在使用 jQuery 自动完成来查看结果作为用户类型的下拉列表,在我的例子中,我从数据库中获取用户名来显示,

 <?php 
          foreach ($stmt = $link->query('select u.id, u.display_name  from user u inner join accounts a on u.id=a.uid  where a.account_type !="bot" order by u.display_name ASC') as $value) 
          {
            ?>
              display_name.push('<?php echo $value["display_name"] ?>');
              user_id.push('<?php echo $value["id"] ?>');
        <?php 
          }
        ?>

这里的问题是,很多名字都像 o'livia 或 de'silva,这个额外的 ' 导致查询行为异常,它不显示结果而是打印此错误消息。

 user_id.push('5648');
 display_name.push('Boody L'Dally');
 Uncaught SyntaxError: missing ) after argument list

虽然我知道我没有正确格式化我的查询,但我尝试了很多选项但没有用,知道如何正确使用所有名称吗?

您需要转义来自数据库的数据。 有许多函数可以转义数据,值得进一步阅读。 这是一个例子:

display_name.push('<?= htmlspecialchars($value["display_name"]) ?>');

如果您的字符串只包含 'never" ...那么可以像下面这样解决.. user_id.push('5648'); display_name.push("Boody L'Dally");

function autocomplet() {
    var min_length = 0;
    var keyword = $('#country_id').val();
    if (keyword.length >= min_length) {
        $.ajax({
            url: 'ajax_refresh.php',
            type: 'POST',
            data: {keyword:keyword},
            success:function(data){
                $('#country_list_id').show();
                $('#country_list_id').html(data);
            }
        });
    } else {
        $('#country_list_id').hide();
    }
}


function set_item(item) {
    // change input value
    $('#country_id').val(item);
    // hide proposition list
    $('#country_list_id').hide();
}