Select2使用文件中的Ajax加载数据
我有一个名为listofValues.php
的脚本,它查询数据库并返回JSON格式值。
我需要的是将这些值传递给select2
data
成员。 我需要它加载一次。
我不需要将select2
输入(term)中的值传递给我的listofValues.php
,如本例所述
$('#select2div').select2({ //data:[], ajax: { dataType: "json", url: "listofvalues.php", success: function (data) { } }
你能帮我解决这个问题吗?
简单的例子
知道从listofvalues.php
返回的对象的格式会很有用,但我们假设,为简单起见,它看起来像这样:
[ {"id": 1, "text": "option1"}, {"id": 2, "text": "option2"}, {"id": 3, "text": "option3"} ]
这是最容易使用的格式,因为默认情况下, select2
可以处理具有属性名称id
和text
对象,并将它们呈现到下拉列表中。 所以你的select2
初始化可能如下所示:
$('#select2div').select2({ ajax: { dataType: "json", url: "listofvalues.php", results: function (data) { return {results: data}; } } });
稍微狡猾的例子
现在让我们假设listofvalues.php
中的数据不符合方便的命名约定:
[ {"id": 1, "firstName": "John", "lastName": "Lennon"}, {"id": 2, "firstName": "Paul", "lastName": "McCartney"}, {"id": 3, "firstName": "George", "lastName": "Harrison"}, {"id": 4, "firstName": "Ringo", "lastName": "Starr"} ]
我们必须设置一个函数来处理输出:
function formatValues(data) { return data.firstName + ' ' + data.lastName; }
我们的select2
初始化:
$('#select2div').select2({ ajax: { dataType: "json", url: "listofvalues.php", results: function (data) { return {results: data}; } }, formatResult: formatValues });
让我知道你是怎么办的。