Php 如何为jQuery自动完成调用MySQL源数据?
我正在使用jQuery autocomplete,希望有一个单独的PHP文件来存放数据,而不是创建一个变量(即var availableTags=[“红色”、“橙色”、“黄色”、“绿色”、“蓝色”) 但是,执行此操作时,“自动完成”将持续显示所有可用选项,而不会过滤掉用户键入的内容 有什么想法吗 Javascript: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
$(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解码,我找到了答案,并在下面给出了答案!谢谢