1

我正在努力更改选择的下拉菜单。为此,我使用 jquery、ajax 和 json。

function ChooseGroupScript() {

                    $.getJSON('edit_scripts.php', {group:$('#group').val()}, function(data) {
                        var select = $('#subject');
                        var options = select.attr('options');
                        $('option', select).remove();

                            $.each(data, function(index, array) {
                                options[options.length] = new Option(array['subject']);
                            });

                    });

                }

                $(document).ready(function() {
                        ChooseGroupScript();
                        $('#group').change(function() {
                                ChooseGroupScript();
                        });

                });

我在控制台中检查:我收到这样的错误:

Jquery type error on cannot read property 'length' of undefined

这是我的PHP:

if(isset($_GET['group'])){
$currentscript = $clients->curr_group_content($_GET['group']);
$scriptscount = sizeof($currentscript);
      for($i=0;$i<$scriptscount;$i++){
        $subject = $currentscript[$i]['subject'];
      }
}
echo json_encode($subject);

HTML:

<form>

<select name="group" id="group">
    <option>comming from database.....</option>
</select>

<select name="subject" id="subject">
</select>
</form>
4

2 回答 2

0

options 不是 select 元素的属性。您可能只是想直接将新选项添加​​到元素中:

       var select = $('#subject');
       // remove this: var options = select.attr('options');
       $('option', select).remove(); // or select.empty() to clean it out

       $.each(data, function(index, array) {
            select.append(new Option(array['subject']));
       });
于 2013-09-19T23:07:43.200 回答
0

在您的代码中,您有

var options = select.attr('options');

这是不对的,因为它不是一个属性。获得所有选项的正确方法

var options = $('#subject options');

在你的loop你可以

var select = $('#subject').empty();
$.each(data, function(index, val) {
    select.append($('<option/>', { 'value':index, 'text':val }));
});

一个与示例类似的答案是here。

于 2013-09-19T23:10:07.347 回答