jquery自动完成远程源尝试了一切!但没有好处

时间:2011-11-15 17:54:51

标签: jquery-ui autocomplete datasource

我一直在尝试实现jquery ui自动完成功能..并且基本的html代码与给定的x-相同 -   http://jqueryui.com/demos/autocomplete/#remote

我已尝试过“search.php”的所有组合/代码段,例如 -

1)

<?php 

if ( !isset($_REQUEST['term']) )
    exit;

// connect to the database server and select the appropriate database for use
$dblink = mysql_connect('localhost', 'root', '') or die( mysql_error() );
mysql_select_db('research');

$rs = mysql_query('select uname,email,password from login where uname like "'. mysql_real_escape_string($_REQUEST['term']) .'%" order by uname asc limit 0,10', $dblink);

// loop through each zipcode returned and format the response for jQuery
$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['uname'] .', '. $row['password'] .' '.$row['uname'] ,
            'value' => $row['uname']
        );
    }
}

// jQuery wants JSON data
echo json_encode($data);
flush();
?>

2)

<?php 
include("includes/connect.php");

$query = "SELECT uname from login WHERE uname LIKE '%" . addslashes($_GET['term']) . "%'";

$result = mysql_query($query);

while($row = mysql_fetch_assoc($result)) {

foreach($row as $val)
    $tab[] = $val;

}

print json_encode($tab);
?>

3)

<?php

include("includes/connect.php");

$term = $_REQUEST['m']; // where name of the text field is 'm'
$query = "SELECT * FROM login WHERE uname LIKE '%$term%'";
$result = $mysqli->query($query);
$arr = array();
while($obj = $result->fetch_assoc()) {
      $arr[] = $obj['nome'];
}

echo json_encode($arr);

?>

但仍然没有任何工作!也就是当我在自动填充的文本框中输入时,没有显示结果。可能是什么错误?有没有其他解决方案?请帮忙!!!

1 个答案:

答案 0 :(得分:0)

传递给json_encode的变量必须是字符串数组。 例如[ “红色”, “绿色”, “蓝色”] 或一组对象文字,例如[{“value”:“red”},{“value”:“green”},{“value”:“blue”}]

每次循环时,您都需要将项目附加到现有项目。

我注意到,在所有3个代码片段中,您将当前项目分配给数组变量,而不是附加它。循环完成后,数组中唯一的项目将是循环最近处理的项目。

因此,除非您在字段中键入的内容与该项目匹配,否则自动填充功能不会显示任何内容。

这是我的PHP代码,用于在将字符串数组发送回发出请求的文件之前构建字符串数组。

    $fetchedArtists = $db->query($queryToGetArtists );

    $json = '[';
    $first = true;

    while($row = $fetchedArtists->fetch_assoc())
    {
        if (!$first) 
        {
            $json .=  ',';
        } 
        else 
        {
            $first = false;
        }

        $artist = $row['artistName'];     
        $json .= '{"value":"'.$artist.'"}';
    }
    $json .= ']';
    echo $json;