我的Select2插件没有通过ajax从php脚本返回任何结果

时间:2014-01-15 17:38:04

标签: php ajax jquery jquery-select2

我现在已经绞尽脑汁几个小时了,试图弄清楚为什么这不起作用。提前感谢任何可以提供帮助的人。

基本上,我试图使用来自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框时,它显示的只是“搜索...”并且从不显示结果。

再次感谢您提供任何帮助。

2 个答案:

答案 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;
}