Ajax 数组不会在下拉选择时填充



一旦更改了dropdown1的选定值,我就需要填充dropdown1选择值的相应数据。填充的数据必须附加到dropdown2

我检查了有关此的相关答案和问题,并尝试了几乎所有可能的解决方案,但我仍然无法正常工作。

html

<body>
<select id="dropdown1" class='form-control-static'>
    <option value="value1">Value 1</option>
    <option value="value2">Value 2</option>
</select>
<select id="dropdown2" class='form-control-static'>
</select>
<script src="js/jquery.js"></script>
<script src="js/externalJavascript.js"></script>
</body>

externaljavascript

$('select[name=dropdown1]').change(function (e) {
        var selected = $('select[name=dropdown1]').val() 
        alert(selected);
        $.ajax({
            type: 'POST',
            data: { name: selected },
            url: 'dbaccess.php',
            datatype: 'json',
            success: function(data) {
                alert(data);
                var $select = $('#dropdown2');
                $.each(data, function(key, value) {
                    $select.append('<option value=' + key + '>' + value.name + '</option>');
                });
            }
        });
    });

dbaccess.php

<?php
$name = $_POST['name'];
$name_id = getIdByName($name);
$names_arr = array();
$names_arr = getNamesByNameId($name_id);
//var_dump($names_arr);
echo json_encode($names_arr);
?>

消息警报框返回正确的数据,如SQL编辑器所示 alert(data)将数据库返回的数据显示为

[{"name":"My Name 1"},{"name":"My Name 2"},{"name":"My Name 3"}]

但是,无论我做什么,它都不会附加到dropdown2。我认为ajax没有任何问题。

有什么想法或想法吗?我感谢任何帮助或建议。

谢谢。

您的整个代码非常完美,只是缺少一行。

只需添加 json.parse ajax成功呼叫中的功能。

success: function(data) {
                data = JSON.parse(data);
                .........
            }

最新更新