jquery の ajax 関数を使用して、外部の php ファイルからデータを取得しています。php ファイルから返されるデータは、オートコンプリート機能に使用されます。ただし、オートコンプリート関数は、php ファイルの配列から特定の値をそれぞれ提案するのではなく、それらすべてを返します。私のjqueryは次のようになります。
jQuery('input[name=past_team]:radio').click(function(){
$('#shadow').fadeIn('slow');
$('#year').fadeIn('slow');
var year = $('#year').val();
$('#year').change(function () {
$('#shadow').val('');
$.ajax({
type: "POST",
url: "links.php",
data: ({
year: year,
type: "past_team"
}),
success: function(data)
{
var data = [data];
$("#shadow").autocomplete({
source: data
});
}
});
});
});
link.php ファイルは次のようになります。
<?php
session_start();
require_once("functions.php");
connect();
$type = $_POST['type'];
$year = $_POST['year'];
if($type == "past_team")
{
$funk = mysql_query("SELECT * FROM past_season_team_articles WHERE year = '".$year."'")or die(mysql_error());
$count = mysql_num_rows($funk);
$i = 0;
while($row = mysql_fetch_assoc($funk))
{
$name[$i] = $row['team'];
$i++;
}
$data = "";
for($i=0;$i<$count;$i++)
{
if($i != ($count-1))
{
$data .= '"'.$name[$i].'", ';
} else
{
$data .= '"'.$name[$i].'"';
}
}
echo $data;
}
?>
オートコンプリートが機能します。しかし、入力フィールドに何かを入力し始めると、読み込まれる提案は配列全体です。「シカゴ・カブス」「ボストン・レッドソックス」「アトランタ・ブレーブス」……。