jQuery UI自动完成多个远程(JSON,PHP,JS)

伯恩德

我想使jQuery UI自动完成具有多个值和远程(https://jqueryui.com/autocomplete/#multiple-remote)。

现在我有以下代码:

JS

$(function() {
    function split( val ) {
      return val.split( /,\s*/ );
    }
    function extractLast( term ) {
      return split( term ).pop();
    }

    $("#retr")
        .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                $( this ).autocomplete( "instance" ).menu.active ) {
                event.preventDefault();
            }
        })
        .autocomplete({
            source: function( request, response ) {
                $.getJSON( "retr/retr_arry.php", {
                term: extractLast( request.term )
            }, response );
        },
        search: function() {
            var term = extractLast( this.value );
            if ( term.length < 3 ) {
                return false;
            }
        },
        focus: function() {
            return false;
        },
        select: function( event, ui ) {
            var terms = split( this.value );
            terms.pop();
            terms.push( ui.item.value );
            terms.push( "" );
            this.value = terms.join( ", " );
            return false;
        }
    });
});

的HTML

<input id="retr" type="text" placeholder="Please select the user(s)">

的PHP

//Database connect...

if (isset($_POST["term"])) {
    $input_term = $_POST["term"];
} else {
    exit; 
}
$username = array();
$term2 = '%'.$term.'%';

//SQL
$sql = $db->prepare("SELECT username FROM users WHERE username LIKE ?");
$sql->bind_param('s', $term2);
if ($sql->execute()) {
    $sql->store_result();
    $sql->bind_result($username);
    while ($sql->fetch()) {
        $usernames[] = $username;
    }
    echo (json_encode($usernames));
} else {
    exit;
}

问题

我没有自动完成。当我输入最多5个字母时,仍然没有结果。

编辑

将POST更改为GET之后(在PHP文件中),我得到了结果。但是结果没有正确排序。

例如:如果输入“ adm”,则会得到“ SYSTEM”。我怎样才能解决这个问题?我认为问题出在PHP的SQL部分。

约书亚
if (array_key_exists("term", $_POST)) {
    $term2 = '%'.$_POST["term"].'%';
} else {
    exit;
}
$username = array();

//SQL
$sql = $db->prepare("SELECT username FROM users WHERE username LIKE ?");
$sql->bind_param('s', $term2);
if ($sql->execute()) {
    $sql->store_result();
    $sql->bind_result($username);
    while ($sql->fetch()) {
        $usernames[] = $username;
    }
    echo json_encode($usernames);
} else {
    exit;
}

而不是使用exit ...最好返回错误消息/返回正确的HTTP状态,因此您可以处理这种情况,而不必删除它们并使JavaScript崩溃。


更新:提示:不要使用mysqli,而要使用PDO。PDO具有前瞻性,并支持许多数据库驱动程序。因此很容易切换它们,依此类推。PDO更容易,您的代码可能更小,更好地理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个JQuery UI自动完成选择

来自分类Dev

jQuery UI自动完成多个“响应”方法

来自分类Dev

jQuery UI自动完成的JSON数组

来自分类Dev

自动完成的jQuery UI ... json的错误

来自分类Dev

jQuery UI自动完成的JSON数组

来自分类Dev

JSON的jQuery自动完成

来自分类Dev

给json自动完成的jQuery

来自分类Dev

使用 JSON 将多个数组从 PHP 传递到 AJAX 和 JQuery 自动完成

来自分类Dev

jQuery UI,HTML自动完成

来自分类Dev

JQuery UI 自动完成很慢

来自分类Dev

jQuery的自动完成与多个来源

来自分类Dev

jQuery UI自动完成-访问JSON中的嵌套对象

来自分类Dev

带有json文件的jQuery UI自动完成

来自分类Dev

带有json文件的jQuery UI自动完成

来自分类Dev

jQuery Ui自动完成过滤器本地JSON数组

来自分类Dev

使用SQL,PHP在CodeIgniter中实现jQuery UI自动完成

来自分类Dev

Jquery自动完成多个PHP数组作为不同的类别

来自分类Dev

Angular JS和jQuery UI自动完成功能

来自分类Dev

jQuery提到jQuery UI自动完成

来自分类Dev

jQuery自动完成与JSON问题

来自分类Dev

jQuery自动完成,使用pHp json中的数据填充

来自分类Dev

jQuery自动完成与远程JSON数据源不起作用

来自分类Dev

jQuery UI自动完成问题

来自分类Dev

jQuery UI自动完成奇怪的行为

来自分类Dev

jQuery UI自动完成和隐藏字段

来自分类Dev

没有jQuery UI的自动完成

来自分类Dev

jQuery UI自动完成minLength提示

来自分类Dev

jQuery UI自动完成显示错误的值

来自分类Dev

jQuery UI自动完成解析数据