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可以处理具有属性名称idtext对象,并将它们呈现到下拉列表中。 所以你的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 }); 

让我知道你是怎么办的。