未设置选择框的JQuery值


JQuery Value of Select Box Not Being Set

我正在创建一个页面,我的网站的用户可以编辑他们已经创建的列表。列表有三个类别,每个类别都有自己的子类别。我使用AJAX根据所选择的类别动态加载子类别。由于这是一个编辑页面,因此每个字段的值必须预先设置,以便用户可以根据需要更改它们。类别加载良好,子类别也是如此。但是,我在将子类别选择框的值设置为清单的子类别值时遇到了问题。

下面是加载子类别的函数:
function loadEditSubcats(){
$('#edit-subcategory').empty();
var cat = $('#category-hidden').val();
var postData = { category : cat };
$.post("/assets/scripts/fetch_subcats.php",
        postData,
        function(data, text, jqxhr) {
            $.each(data, function(key, val){
                $('#edit-subcategory').append('<option value="' + val + '">' + val + '</option>');
            });
        },
        'json'
    ).fail(
        function( jqXHR, textStatus, errorThrown ) {
            alert(errorThrown);
        }
    );
}

这是我在页面加载时加载子类别的地方,以及尝试预置子类别的值:

$(document).ready(function () {
    loadEditSubcats();
    $("#edit-subcategory").val($('#subcat-hidden').val());
});

最后是子类别的选择框,以及包含初始子类别的隐藏值:

<input type="hidden" id="subcat-hidden" value="<?=$item->subcategory?>">
<div class="form-group col-md-6">
    <label id="name-label"><h3>Subcategory</h3></label><br>
    <span "dropdown-menu-right">
        <select class="form-control" id="edit-subcategory"></select>
    </span>
</div>

我认为也许,AJAX是异步加载的时间值被设置,子类别实际上没有加载。任何见解都是非常赞赏的!谢谢你!

您可以像下面这样更改您的方法来使它工作

$.ajax({
type: "POST",
url: "/assets/scripts/fetch_subcats.php",
data: postData,
success: function(data){
  $.each(data, function(key, val){
            $('#edit-subcategory').append('<option value="' + val + '">' + val + '</option>');
        });
  //Do this in success function
  $("#edit-subcategory").val($('#subcat-hidden').val());
},
dataType: json
});