使用PHP和Ajax填充选择框返回空

时间:2017-02-07 18:36:46

标签: php ajax

我遇到了一个ajax函数的问题,该函数使用null选项填充列表框。我对此很新,必须忽略一些东西。数据库连接是通过Sugarcrm完成的,因为我也将它用于自动完成功能。我似乎无法获得填充除空之外的任何选项。

的index.php

  <script>
        $(document).ready(function(){
            $.ajax({
                url: 'search.php',
                type: 'json',
                success:function(response){
                    var len = response.length;
                    $("#sel1").empty();
                    for( var i = 0; i<len; i++){
                        $("#sel1").append("<option value='"+name+"'></option>");

                    }
                }
            });
        });

</script>


            <select id="sel1" multiple size="6">
                <option value="0">- Select -</option>
            </select>    

的search.php

<?php

global $db;

$rolelistQry = "SELECT distinct name from acl_roles";


$rolelistData = $db->query($rolelistQry);

$name_array = array();

    while( $row = $rolelistData->fetch_assoc()){
        $name = $row['name'];
        $name_array[] = array("name" => $name);
    }
echo json_encode($name_array);



?> 

4 个答案:

答案 0 :(得分:1)

$("#sel1").append("<option value='"+name+"'></option>");

名称变量不存在。尝试将其更改为response.name

$("#sel1").append("<option value='"+response.name+"'>"+response.name+"</option>");

答案 1 :(得分:0)

我猜你是否得到了一堆空白选项?

<option value="0">- Select -</option>

是否为正确的语法:选项的值(选中时)为0,并显示选择。

因此,当您在ajax回调中添加新项目时,您希望让选项显示一些内容:

<option value='name'>NAME</option>

答案 2 :(得分:0)

实际上你没有循环遍历数组名称,

这应该有效:

<script>
        $(document).ready(function(){
            $.ajax({
                url: 'search.php',
                type: 'json',
                success:function(response){

                    var result = $.parseJSON(response);

                    var len = result.length;

                    $("#sel1").empty();
                    for( var i = 0; i<len; i++){

                        $("#sel1").append("<option value='"+ result[i]['name']  +"'></option>");

                    }
                }
            });
        });

</script>


            <select id="sel1" multiple size="6">
                <option value="0">- Select -</option>
            </select>

答案 3 :(得分:0)

您正尝试将响应作为数组访问,对吧?

您需要执行类似

的操作
$("#sel1").append("<option value='"+response[i].name+"'>"+response[i].name+"</option>");

从响应数组中获取项目。 (根据majorlogic的回答修改)