【问题标题】:My Select2 plugin is not returning any results from php script via ajax我的 Select2 插件没有通过 ajax 从 php 脚本返回任何结果
【发布时间】:2014-01-15 17:38:04
【问题描述】:

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

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

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

【问题讨论】:

  • 另外,我使用硬编码搜索“a”只是为了让它显示结果,一旦完成,我将继续使结果动态化。

标签: php ajax jquery jquery-select2


【解决方案1】:

尝试更改结果函数以返回数据。 select2 需要一个 id,text 对数组。我怀疑您在浏览器中看到 data.text 不存在的 javascript 错误。

results: function (data) {
    return { results: data };  
}

【讨论】:

    【解决方案2】:

    添加更多:

    formatResult: formatValues,
    formatSelection: selectValues,
    

    创建函数formatresult和selectValues:

    function formatValues(data) {
        return data.text;
    }
    
    function selectValues(data) {
        return data.id;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-12
      • 1970-01-01
      • 2014-11-06
      • 2011-01-07
      • 2015-06-12
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多