0

所以我试图在自动完成小部件中获取一些信息,就像它在 JQuery UI 演示Demo中显示的那样,唯一的问题是他们使用一个变量来填充他们想要显示的数据,我反而想访问数据以及在 MySQL 中使用数据库的不同描述和内容,为此我已更改源以使用另一个查找信息的 php 页面。这是自动完成的代码,我真的不明白这些方法,所以我没有从基本搜索中更改它。

这是JS:

$(document).ready((function(){
            $( "#completa" ).autocomplete({
        source: "buscar.php",
        minLength: 1,
                    focus: function (event, ui){
                        $("#completa").val(ui.item.val);
                        return false;
                    };
        }));

这就是我在 buscar.php 中的内容:

<?php

    $conec = mysql_connect(localhost, root, admin);
    if(!$conec)
    {
        die(mysql_error());
    }
    else
    {
        $bd = mysql_select_db("ve_test",$conec );
        if(!$bd)
        {
            die(mysql_error());
        }
    }

$termino = trim(strip_tags($_GET['term']));//Obtener el termino que envia el autocompletar

$qstring = "SELECT name, descripcion FROM VE_table WHERE name LIKE '%".$termino."%'";
$result = mysql_query($qstring);//Solicitud a la Base de Datos

while ($row = mysql_fetch_array($result,MYSQL_ASSOC))//Realizar un LOOP sobre los valores obtenidos
{
                $row['value']=htmlentities(stripslashes($row['name']));
                $row_set[] = $row;//build an array
}
echo json_encode($row_set);//Enviar los datos al autocompletar en codificacion JSON, Altamente Necesario.

?>

4

2 回答 2

0

jQuery UI 自动完成选项“源”是一个字符串或字符串数​​组。它无法从 PHP 页面获取此信息。您必须使用 AJAX 调用来读取 PHP 页面的输出。如果您之前没有使用过 AJAX,那么您应该使用 Google 获取教程。我要做的是让 PHP 脚本输出由分隔符分隔的所有数据(---,例如..任何不在您的数据列表中的东西)。然后通过使用 AJAX 调用检索数据,并使用 split() 将输出按分隔符 (---) 拆分为字符串数组。然后这个数组应该作为你的自动完成源。为确保您的 Javascript 没有问题,请使用以下命令:

$(document).ready(function(){
    $( "#completa" ).autocomplete({
        source: ["string","sample","test","preset values","thisiswhereyourarraywillgo"],
        minLength: 1,
        focus: function (event, ui){
            $("#completa").val(ui.item.val);
            return false;
        }
    });
});

如果这可以预测 Array 中这 5 个单词中的任何一个,那么 AJAX 调用就有问题。

于 2012-10-09T20:33:22.173 回答
0

好的,所以我找到了问题的答案,这里是:

在 buscar.php 中,我只需要添加一个我希望在 JQ 中接收的名称的变量:

<?php

    $conec = mysql_connect(localhost, root, admin);
    if(!$conec)
    {
        die(mysql_error());
    }
    else
    {
        $bd = mysql_select_db("ve_test",$conec );
        if(!$bd)
        {
            die(mysql_error());
        }
    }

$termino = trim(strip_tags($_GET['term']));//Obtener el termino que envia el autocompletar

$qstring = "SELECT name, descripcion FROM VE_table WHERE name LIKE '%".$termino."%'";
$result = mysql_query($qstring);//Solicitud a la Base de Datos

while ($row = mysql_fetch_array($result,MYSQL_ASSOC))//Realizar un LOOP sobre los valores obtenidos
{
                $row['value']=htmlentities(stripslashes($row['name']));
                $row['desc']=  htmlentities(stripcslashes($row['descripcion'])); //This is the line I Changed
                $row_set[] = $row;//build an array
}
echo json_encode($row_set);//Enviar los datos al autocompletar en codificacion JSON, Altamente Necesario.?>

这是我使用的 JQ:

    $(document).ready((function(){
            $( "#completa" ).autocomplete({
        source: "buscar.php",
        minLength: 1,
                    focus: function( event, ui ) {
                    $( "#completa" ).val( ui.item.label );
                    return false;
                    },
                    select: function( event, ui ) {
                    $( "#completa" ).val( ui.item.value );
                    $( "#completa-description" ).html( ui.item.desc );
                    return false;
                }
            })
            .data( "autocomplete" )._renderItem = function( ul, item ) {
                return $( "<li>" )
                .data( "item.autocomplete", item )
                .append( "<a>" + item.value + "<br>" + item.desc + "</a>" )
                .appendTo( ul );
            };
        }));

我希望这对其他人也有帮助。

于 2012-10-09T21:35:49.503 回答