Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Select2从服务器检索JSON_Javascript_Jquery_Jquery Select2 - Fatal编程技术网

Javascript 使用Select2从服务器检索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

我试图使用服务器上的JSON数据创建一个下拉列表。我试图效仿他们的做法,但我很难做到这一点

我使用下面的代码从数据库中获取数据,我可以将其打印到控制台,但我无法将数据显示为下拉列表

$(".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;