我試圖設置一個從csv獲取其數據的自動完成。 csv有一個餐廳名稱和食物類型的列表。我已經瀏覽了一些其他的帖子,以及自動完成的文檔,但我認爲這是csv中的兩個字段,而不是一個字段讓我沮喪。使用csv和兩個字段的jQuery UI自動完成
例CSV數據:
McDonald's,Fast Food
Olive Garden,Italian
Manny's,Steakhouse
Carino's,Italian
etc...
用戶應該能夠通過兩種食物類型或餐館名稱搜索:
<body>
<br>
<br>
<label id="lblSearchRestaurant" for="txtSearchRestaurant">Search for a Restaurant</label>
<input type="text" id="txtSearchRestaurant">
</body>
這是我已經試過了自動完成設置:
$(function() {
$("#txtSearchRestaurant").autocomplete({
source:searchRestaurant.php,
select: function(event, ui) {
$("#search").val(ui.item.label + "/" + ui.item.actor);
return false;
}
}).data("ui-autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.label + "</strong>/" + item.actor + "</a>")
.appendTo(ul);
};
});
我需要使用PHP腳本來提供數據。下面是我在這一點上:
<?php
$header = NULL;
$restaurants = array();
if (($file = fopen('restaurants.csv', 'r')) !== FALSE) {
while (($row = fgetcsv($file, 1000, ',')) !== FALSE) {
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($file);
}
$term = $_GET['term'];
foreach($restaurants as $k=>$v) {
if(preg_match("/^$term/i", $v)) { $return[] = $v; }
}
foreach($restaurants as $k => $v) {
if(preg_match("/$term/i", $v)) { $return[] = $v; }
}
echo json_encode(array_values(array_unique($return)));
以上都沒有工作,所以我想在餐廳的數據在格式化到一個數組,而不是僅僅以逗號分隔值:
[
{name:"McDonald's",type:"Fast Food"},
{name:"Olive Garden",type:"Italian"},
{name:"Manny's",type:"Steakhouse"},
{name:"Carino's",type:"Italian"}
];
我嘗試在<script>
標記本地和單獨的文件中,但都沒有工作。
因此,以上都沒有爲我工作,但我不是最好的數組尚未使用JSON數據,所以我可能沒有正確設置PHP腳本。
如果有人能指出我在這裏正確的方向,我會很感激。
謝謝。
注意潛在的答案: 了jQuery UI自動完成,輸入數據的格式(如上所述),並使用PHP來從CSV將自動完成的數據是這一切的要求。不幸的是,這三項規定不在我的控制之下。
大量的意見,但沒有答覆 - 沒有我難倒羣衆?來吧,夥計們!借我一把! – marky