Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
使用JQUERY/JSON自动填充选择下拉框_Jquery_Ajax_Json - Fatal编程技术网

使用JQUERY/JSON自动填充选择下拉框

使用JQUERY/JSON自动填充选择下拉框,jquery,ajax,json,Jquery,Ajax,Json,好的,我花了很多时间查看示例,但找不到一个对我的情况有足够帮助的示例。我有一个JSON文件,在本例中简化为: { "Company":[ { "Position": "Manager", "Name": { "11": "joe", "12": "bill", "166": "John"

好的,我花了很多时间查看示例,但找不到一个对我的情况有足够帮助的示例。我有一个JSON文件,在本例中简化为:

{
 "Company":[
    {
        "Position": "Manager",
        "Name": {
                            "11": "joe",
                            "12": "bill",
                            "166": "John"
                            }
    },
{

        "Position": "Tech",
        "Name": {
                            "11": "Bob",
                            "12": "Cindy",
                            "166": "Karl"
                            }
    },
{

        "Position": "Sales",
        "Name": {
                            "11": "Sam",
                            "12": "Ron",
                            "166": "Sara"
                            }
    }
]}
我正在尝试创建两个选择框。当用户选择第一个位置框时,它将用属性名称自动填充第二个位置框。以下是我到目前为止的情况:

<select id="job"></select>
<select id="name"></select>
以及守则:

$select = $('#job');
$select2 = $('#name');

$.ajax({
    url: 'factors.json',
    dataType: 'JSON',
    success: function(data) {

        $select.html('');
        $.each(data.Company, function(key, val) {
            $select.append('<option id="' + key + '">' + val.Position + '</option>');



            $("#job").change(function() {
                $.each(val.Name, function(key2, val2) {
                    $select2.append('<option id="' + key2 + '">' + val2 + '</option>');
                })
            })
        })
    },
});​

此代码将在第二个框中自动填充每个位置的所有名称。我似乎不知道如何用每个唯一对象的名称填充它。谢谢你的帮助

这应该能奏效

$.each(data.Company, function(key, val) {
    $select.append('<option id="' + key + '">' + val.Position + '</option>');
});



$("#job").change(function(e) {
    $select2.empty();
    $index = $(this).children(':selected').attr('id');
        for (var k in data.Company[$index].Name) {
            $select2.append('<option id="' + k + '">' + data.Company[$index].Name[k] + '</option>');
        }
});

试试这样的。你的选项应该有一个value属性。我在选项中添加了一个数据id attr,以便使用它存储位置索引

$.each(data.Company, function(i, v) {
    // create option with value as index - makes it easier to access on change
    var options = $('<option/>', {value: v.Position, text: v.Position}).attr('data-id',i);    
    // append the options to job selectbox
    $('#job').append(options);
});

// bind change event
$('#job').change(function() {
    // cache this
    var $el = $(this);
    // get data-id attr from selected option
    var id = $('option:selected',this).data('id');
    // empty select
    $('#name').empty();
    // get name values for selected option
    $.each(data.Company[id].Name, function(i, v) {
        // create option elements
        var options = $('<option/>', {value: v, text: v});
        // append the options to name selectbox
        $('#name').append(options);
    });    
}).change();// trigger change() on page load to fill name selectbox​

你的JSON是无效的,因为很抱歉,我在为这篇文章瘦身时错过了结束括号。现在应该可以了还是无效的,你刚才也注意到了。。我想我明白了!谢谢你-这有助于我理解如何以不同的方式获得它!啊-非常感谢!完美