Javascript 使用Select2从服务器检索JSON
我试图使用服务器上的JSON数据创建一个下拉列表。我试图效仿他们的做法,但我很难做到这一点 我使用下面的代码从数据库中获取数据,我可以将其打印到控制台,但我无法将数据显示为下拉列表Javascript 使用Select2从服务器检索JSON,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,我试图使用服务器上的JSON数据创建一个下拉列表。我试图效仿他们的做法,但我很难做到这一点 我使用下面的代码从数据库中获取数据,我可以将其打印到控制台,但我无法将数据显示为下拉列表 $(".js-example-basic-single").select2({ ajax: { url: "DBHandler.php?k=", dataType: 'json', delay: 250, data: function (para
$(".js-example-basic-single").select2({
ajax: {
url: "DBHandler.php?k=",
dataType: 'json',
delay: 250,
data: function (params) {
console.log(params.term);
return {
search: params.term // search term
};
},
processResults: function (data, params) {
// parse the results into the format expected by Select2
// since we are using custom formatting functions we do not need to
// alter the remote JSON data, except to indicate that infinite
// scrolling can be used
console.log(data)
params.page = params.page || 1;
return {
results: data.items
//pagination: {
//more: (params.page * 30) < data.total_count
//}
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
minimumInputLength: 3
});
console.log(数据)输出:
因此,我的问题是如何获取data.items来填充
标记?我认为您需要以不同的方式格式化JSON。。我将以这种方式粘贴一个需要具有结构的节点,使子节点项
具有至少id
和name
的值数组(用于您的下拉列表填充值,并在下拉列表打开时显示值的名称)
希望这有帮助,祝你好运,我知道select2在axx中可能会很痛苦:)就像@Kresimir Pendic所说的,问题在于我的
JSON
字符串。它的格式不正确
此代码仅检索到一列。然后,它试图将该数据转换为JSON
完全错误 为了获得正确的结构,我必须创建
输出阵列
。然后我使用for循环遍历result
中返回的每个值。我通过创建一个结构为'id'=>$counter,'text'=>$result[0]
的新数组,将每个值存储到输出数组中。创建的每个新数组
都被推入输出阵列
。最后,我在outputArray
上使用了json\u encode($outputArray)
,并echo
编辑了结果
您是否尝试循环数据。项目
并按照$的思路执行操作。将
附加到您的选择
下拉列表中?我厌倦了。让我再试一次。我的第一条评论是错误的,,,我在文档中看到,如果您在select2
中使用ajax,那么这一行results:data.items,
应该为您呈现结果,,,,您能粘贴json数据吗?我将尝试一下。谢谢
<select class="js-example-basic-single form-control" multiple="multiple">
</select>
$stmt = $this->con->prepare($query);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
echo json_encode(array_unique($results));
Zuber, W. P., Mrs.,Zoellner String Quartet,Zeta Chi,YWCA,Yonge, H. M.,YMCA Friendship Council,YMCA,Yellow Fever,yearbooks,Yarbrough, Reed, Mrs.,Yancey, William L.,Yale University,Yale,Wynne, W. W.,Wynne, Andrew Jackson "Jack",writing,Wright, T. P. (Thomas Parks),Wright, Homer,Wright, G. H.,Wright & Co.,wrestling,Worms Orchestra,World War I,World War 1,World Series,World Fellowship Campaign,Wooten, B. A. (Benjamin Allen),Woodmen's Circle,Woodmen of the World,Woodall, A. M. (Aaron Montgomery),Wood, Leonard, 1860-1927,Wood, Clement, 1888-1950,Wood, C. P.,wood,women,Woman's Missionary Society,Wolcott, Edward Oliver, 1848-1905,Wofford College,Wisconsin,Wirt Society student organizations,Wirt Society,Wirt Literary Society,Winston, Margaret,Winston, E. T.,Windham,
{
"items": [
{
"id": "1225212",
"name": "Name 1"
},
{
"id": "6546542",
"name": "Name 2"
}
]
}
$results = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
echo json_encode(array_unique($results));
$outputArray = array();
for($i = 0; $result = $stmt->fetch(); $i++)
{
$counter = $i + 1;
array_push($outputArray, array('id' => $counter, 'text' => $result[0]));
}
$json = json_encode($outputArray);
echo $json;