使用PHP和MySQL实现jQuery UI 1.8.14自动完成功能

3
我不太懂js和编程,但我卡在了一些本不应该太难的问题上。请访问测试页面:
[已删除链接]
我有三个自动完成字段:当前俱乐部、国家和职业生涯统计信息。自动完成功能对职业生涯统计信息完美地运作,在其中我还可以添加字段,而自动完成也适用于添加的字段。
但是对于当前俱乐部和国家字段,我在输入时会得到结果,但当我点击正确的输出时,它并不会显示在输入字段中。
我可以使用其他js库使其正常工作,但这样就无法为添加按钮的职业生涯统计信息字段提供支持。
我使用以下库:
<script  type="text/javascript" src="js/jquery-1.6.3.js"></script>
<script  type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
<script  type="text/javascript" src="js/jq-ac-script.js"></script>

当前的club html如下所示:
<p>
    Current club <label>:</label>
    <input type="text" id="currentclub" />
</p>

在自定义的 jq-ac-script.js 文件中(我最初在某个网站上找到它,但不记得是哪个网站),重要部分是:
$(document).ready(function(){
    $( "#currentclub" ).autocomplete({
        source: "get_club_list.php",
        minLength: 1    
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
       return $( "<li></li>" )
       .data( "item.autocomplete", item )
       .append( item.currentclub )
       .appendTo( ul );
    };
});

“get_club_list.php”的代码如下:
<?php
include ("dbsetup.php");

$return_arr = array();
$param = $_GET["term"];

$fetch = mysql_query("SELECT * FROM FootNews_CLUB 
    WHERE clubShortName LIKE '%$param%'");

/* Retrieve and store in array the results of the query.*/
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

    $row_array['currentclub']           = $row['clubShortName'];
    array_push( $return_arr, $row_array );
}

/* Free connection resources. */
mysql_close($conn);

/* Toss back results as json encoded array. */
echo json_encode($return_arr);

?>

如果我点击选择的俱乐部时它没有显示出来,您有任何想法吗?谢谢!

1个回答

1

哇,使用了我的 PHP 代码。很酷,我很高兴能够帮助。

http://www.jensbits.com/2010/03/29/jquery-ui-autocomplete-widget-with-php-and-mysql/

不确定为什么你要使用带有 _renderItem 的自动完成代码。我认为你不需要它。

将 PHP 代码更改为以下内容:

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

    $row_array['currentclub']  = $row['clubShortName'];
    $row_array['value']   = $row['clubShortName'];
    array_push( $return_arr, $row_array );
}

而且,jQuery 为:

$( "#currentclub" ).autocomplete({
    source: "get_club_list.php",
    minLength: 1    
});

你可以再次阅读我的教程,但自动完成需要返回一个labelvalue字段。然后它会填充选择列表和相应的输入字段。

我保留了$row_array['currentclub'] = $row['clubShortName'];,因为我不知道你是否稍后会使用它。如果你不需要它,那么你也不需要这行代码。

由于你控制返回的数据并且可以在php中指定label和/或value字段,我不明白为什么你要对任何自动完成使用_renderItem

顺便说一下,你应该在你的php代码中添加mysql_real_escape_string以进行一些SQL注入保护:http://www.php.net/manual/en/function.mysql-real-escape-string.php


非常感谢!!!这解决了问题,还感谢您提供教程链接。 - Sky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接