jQuery / Ajax 下拉菜单添加选项

5

这是将选项值添加到下拉列表的正确方法吗?我从ajax中获取数据(使用alert(data);测试过),但似乎没有添加到下拉列表中(在jQuery中生成)。

$(document).on('focusout', '.generate', function(InputField) 
{
    var name = ($('.generate').val());
    $.post("<?php echo site_url('project/testFunction'); ?>",
    {
        name: name,                                
    },
    function(data, status) 
    {
        var items="";

        $.each(data, function(index, item)
        {
            items += "<option>" + item.Description + "</option>";
        });

        $("#typeSoftware").append(items);
    });
});

生成下拉菜单:

$('#hardsoft tr:last').after('<tr><td>Software : </td><td>
  <select id="typeSoftware" class"add" name="softwarenames[]"/></td></tr>');

控制器中的函数:

public function testFunction()
{
    $name = trim($this->input->post('name'));
    $this->load->model('mProject');
    $test = $this->mProject->testFunction($name);

    echo json_encode($test);
}

结果: 这里输入图片描述 数据库函数:
 function testFunction($id) {

    $query = $this->db->get_where('R_InstalledItems', array('Description' =>$id));
    return $query->result();

}

我们可以看到数据响应吗? - megawac
name: name, 中的逗号只是你发布帖子时的笔误还是代码中就有这个错误? - Code Maverick
代码里也有这个问题。我已经把它移除了,但是没有效果。谢谢你的注意。 - David
1
http://jsfiddle.net/RFPu8/ - megawac
你应该尝试使用闭合的<select></select>标签来创建选择器,而不是像这样:<select/>。 - Cfrim
显示剩余2条评论
4个回答

6

请查看这个例子,在我的开发测试中可以正常工作。

<script type="text/javascript">
    $(document).ready(function () {

        $("#dropdownCountry").change(function (e) {
            var obj1 = { Country: $("#dropdownCountry").val() };
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "http://localhost:3323/AjaxWebService.asmx/getState",
                data: JSON.stringify(obj1),
                dataType: "json",
                success: function (data1) {
                    var appenddata1 = "";
                    //alert(data1.d);
                    var jsonData1 = JSON.parse(data1.d);
                    for (var i = 0; i < jsonData1.length; i++) {
                        appenddata1 += "<option value = '" + jsonData1[i].SHORT_NAME + " '>" + jsonData1[i].FULL_NAME + " </option>";
                    }
                    $("#dropdownState").append(appenddata1);
                }
            });
        });
    });
</script>

machinesyntax.blogspot.my/2014/01/how-to-append-dropdownlist-using-jquery.html

这个想法是从Web服务中读取JSON数据并将其附加到下拉列表中。

如果选择更改,请不要忘记删除先前附加的值。您也可以参考此帖子。

如何删除先前附加的值


0
尝试一下这个:-
    function(data, status) 
    {
        var items="";

        $.each(data, function(index, item)
        {
            $("#typeSoftware").append("<option>" + item.Description + "</option>");
        }); 
    });

0
在 $.each 之前插入以下内容:

 data = $.parseJSON(data);

这使它工作了。


0

$(function()
{
var items="";
$.getJSON("adminlist/classdropdown.php",function(data)
{
$.each(data,function(index,item) 
{
items+="<option value='"+item.classname +"'>"+item.classname +"</option>";
});

$("#eclass").append(items);
});
});  

它将工作得很好


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接