【发布时间】:2014-01-17 01:38:32
【问题描述】:
我正在尝试让一个 jQuery 自动完成字段来处理来自远程数据库的数据,但我没有运气。到目前为止,这是我尝试过的:
1.我的标题中包含指向源代码的所有必要链接。
2.我编写了以下 jQuery 脚本:
<script>
$(function() {
function log( message ) {
$( "<div>" ).text( message ).prependTo( "#log" );
$( "#log" ).scrollTop( 0 );
}
$( "#projNo0" ).autocomplete({ //projNo0 is the name of the autocomplete field
source: "projects.php",
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
});
</script>
3.这是应该填充自动完成字段 projNo0 的 PHP 后端(数据库连接在同一文件的其他地方处理):
$return_arr = array();
if ($con2) //If the DB connection is successful
{
//Get the user's input from projNo0
$ac_term = "%".$_GET['term']."%";
$query = $con2->prepare("SELECT CodeID FROM CodeTable WHERE
CodeID LIKE :term");
$data = array('term'=>$ac_term);
$query->execute($data);
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
$row_array['CodeID'] = $row['CodeID'];
array_push($return_arr,$row_array);
//echo $row['CodeID']; //line used for testing
//echo '<br />'; //line used for testing
}
}
4.这是我的自动完成字段的 HTML。它是数组的一部分:
<p class="ui-widget">
<input type="text" name="projNo[]" id="projNo0" value="<? php echo $projNo[0]; ?>" />
</p>
我可以确认连接到远程数据库没有问题。我能够回显 SELECT 语句返回的值数组。但是,只有当我将一组值硬编码到其中时,jQuery 脚本才有效。 (例如,将源“projects.php”替换为 ["Bob","Carol","Ted","Alice"]。)当我右键单击该字段并检查它时,网络活动会显示该项目。 php 被调用并且它正在接受我的输入,并将其附加为 GET 变量。该活动的状态是“OK”。但我没有得到自动填充建议的下拉列表。
我的应用程序和数据库之间的中断在哪里?我假设这就是问题所在,因为脚本使用硬编码值。
【问题讨论】:
-
你的脚本返回什么?纯json?你是否包含了 jquery-ui css 文件?
-
是的,ui css 文件在那里。当我在其中使用硬编码的值数组时,jQuery 脚本可以正常工作,但当我尝试从数据库中获取值时却不行。
-
您检查过您的脚本是否正在返回某些内容?显示脚本的一些示例输出。您是否检查了客户端收到的内容?
-
当我在 projects.php:
echo json_encode(array_values($query->fetchAll(PDO::FETCH_COLUMN, 0)));使用我自己的名字作为 :term 运行它时,我得到 ["Michael Benton"]。我的名字在数据库里,所以没问题。它只是没有把它交给 JQuery 脚本。
标签: javascript php jquery jquery-ui autocomplete