Php 如何为jQuery自动完成调用MySQL源数据?

Php 如何为jQuery自动完成调用MySQL源数据?,php,jquery,jquery-ui,jquery-ui-autocomplete,Php,Jquery,Jquery Ui,Jquery Ui Autocomplete,我正在使用jQuery autocomplete,希望有一个单独的PHP文件来存放数据,而不是创建一个变量(即var availableTags=[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”) 但是,执行此操作时,“自动完成”将持续显示所有可用选项,而不会过滤掉用户键入的内容 有什么想法吗 Javascript: $(document).ready(function() { $( ".autocomplete" ).autocomplete({ sourc

我正在使用jQuery autocomplete,希望有一个单独的PHP文件来存放数据,而不是创建一个变量(即var availableTags=[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”)

但是,执行此操作时,“自动完成”将持续显示所有可用选项,而不会过滤掉用户键入的内容

有什么想法吗

Javascript:

$(document).ready(function() {

    $( ".autocomplete" ).autocomplete({
            source: "../../db/autocomplete_list.php"
    });

});
autocomplete_list.php

require_once('../includes/connect.php');
$dbh = connect(DB_HOST,DB_USER,DB_PASSWORD,CM_DATABASE);

$colors = '[';

$sth = $dbh->query ("SELECT * FROM constants 
                     WHERE category='Colors' 
                     ORDER BY display");

while ($row = $sth->fetch ()) { 

    $colors.= '"'.$row[value].'", '; 

}

$colors = rtrim($colors, ', ');

$colors .= ']';

print $colors;
执行autocomplete_list.php

require_once('../includes/connect.php');
$dbh = connect(DB_HOST,DB_USER,DB_PASSWORD,CM_DATABASE);

$colors = '[';

$sth = $dbh->query ("SELECT * FROM constants 
                     WHERE category='Colors' 
                     ORDER BY display");

while ($row = $sth->fetch ()) { 

    $colors.= '"'.$row[value].'", '; 

}

$colors = rtrim($colors, ', ');

$colors .= ']';

print $colors;
[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”]

编辑: 已将我的autocomplete_list.php文件更新为以下内容。但是,现在自动完成并没有显示我的值。如果我在FireBug中检查响应,它正确地显示了结果,只是看起来它们没有被传递回自动完成

require_once('../includes/connect.php');
$dbh = connect(DB_HOST,DB_USER,DB_PASSWORD,CM_DATABASE);

if(isset($_GET['term'])) {
    $mysearchString = $_GET['term'];
}

$sth = $dbh->query("SELECT category, value, display FROM constants 
                    WHERE category = 'COLORS' AND value LIKE '$mysearchString%'
                    ORDER BY display");

while ($row = $sth->fetch ()) { 
    print $row['display']."\n";         
}

source
property需要一个值数组,而不是字符串。尝试将“autocomplete_list.php”的内容直接回显到脚本上,如下所示:

source: <?php include "../../db/autocomplete_list.php"; ?>
来源:

这应该行得通。

最好的方法是减少服务器端的可能选项:

$sth = $dbh->query ("SELECT * FROM constants 
                     WHERE category='Colors' and value like '.".$_GET['term']."%'
                     ORDER BY display");
(将$_GET['term']替换为对照sql注入检查的字符串..)

请参阅:

在此处找到解决方案:


想了想,但是你不能在Javascript中包含PHP。做了更改,但是现在自动完成没有显示在我的live表单上。当我检查Firebug上的控制台时,它正确地调用了所有内容。有什么想法吗?你看到页面上有错误吗?没有错误。把萤火虫打开,什么也没有。“GET dev.sample.com/db/autocomplete_list.php?term=l”,响应为“黄色”、“蓝色”。它应该看起来像控制台中的数组。是这样吗?json_用php编码,用jqueryI解码,我找到了答案,并在下面给出了答案!谢谢