我现在已经绞尽脑汁几个小时了,试图弄清楚为什么这不起作用。提前感谢任何可以提供帮助的人。
基本上,我试图使用来自php / mysql数据库查询的json编码数据来填充select2插件的下拉列表。
HTML:
<input type="hidden" name="search-area" id="location-search" data-placeholder="Select an area" style="width:100%"/>
Javascript:
$(document).ready(function() {
$(".select2").select2();
$("#location-search").select2({
ajax: {
url: "location-data.php",
dataType: 'json',
data: function (term) {
return {
q: term
};
},
results: function (data) {
return { results: data.text };
}
}
});
})
PHP脚本'location-data.php':
<?php
include 'db/db-connect.php';
$query = "SELECT townID, town FROM towns WHERE town LIKE '%a%' ORDER BY town";
$result = $db->query($query);
$numtowns = $result->num_rows;
if($numtowns != 0) {
while($row = $result->fetch_assoc()) {
$answer[] = array("id"=>$row['townID'], "text"=>$row['town']);
}
}
else {
$answer[] = array("id"=>"0", "text"=>"No Results Found...");
}
echo json_encode($answer);
?>
现在我在浏览器中查看了location-data.php页面,它显示的格式正确,见下文。
[{"id":"1","text":"basildon"},{"id":"2","text":"billericay"},{"id":"7","text":"eastwood"},{"id":"12","text":"hanningfield"},{"id":"5","text":"maldon"},{"id":"11","text":"ongar"},{"id":"6","text":"rayleigh"}]
每当我尝试使用select2框时,它显示的只是“搜索...”并且从不显示结果。
再次感谢您提供任何帮助。
答案 0 :(得分:0)
尝试更改结果函数以返回数据。 select2需要一个id,text对的数组。我怀疑你在浏览器中看到一个javascript错误,data.text不存在。
results: function (data) {
return { results: data };
}
答案 1 :(得分:0)
添加更多:
formatResult: formatValues,
formatSelection: selectValues,
创建函数formatresult和selectValues:
function formatValues(data) {
return data.text;
}
function selectValues(data) {
return data.id;
}