Javascript jQuery等待select从数据库填充

Javascript jQuery等待select从数据库填充,javascript,jquery,drop-down-menu,Javascript,Jquery,Drop Down Menu,我有一个ddl下拉列表,它在另一个ddl的更改事件之后从数据库中填充,但我想在从数据库中填充后更改此ddl的值 例如: // This work very well $("#ddlGroups").on('change',function(){ // Load data from database and populate ddlUsers // response is loaded from database with $.ajax // Query Example:

我有一个ddl下拉列表,它在另一个ddl的更改事件之后从数据库中填充,但我想在从数据库中填充后更改此ddl的值

例如:

// This work very well
$("#ddlGroups").on('change',function(){
    // Load data from database and populate ddlUsers
    // response is loaded from database with $.ajax
    // Query Example: SELECT User_ID, Username FROM tblUsers WHERE Group_ID = [Group_ID] (Just for undrestanding the question)

    var Records = response.d;
    $("#ddlUsers").empty();
    $.each(Records, function(){
    var _Key = this.User_ID;
        _Value = this.Username;
        $("#ddlUsers").append($("<option />").val(_Key).text(_Value));
    });
});

// When button clicked then trigger ddlGroups change event and assign select option from ddlUsers
var _UserID = User_ID_From_Database; // Loaded from Database when button clicked
$("#ddlGroups").trigger('change'); // Users are loaded from database based on group ID
$("#ddlUsers").val(_UserID); // But this dosn't change

如何检查是否加载了ddlUsers,我尝试了while循环,但它从未停止。

使用jquery,有两种基本相同的方法将ajax响应从数据库连接到事件或UI结果。第一个是承诺,第二个是回调。它们都有100万个示例,jquery文档非常健壮

在您的情况下,回调调用正确的函数,而不是触发器。下面只是要显示的垃圾代码

No:  $("#ddlGroups").tigger('change'); 

Yes:
//Your code 
$("#ddlGroups").on('change', updateDDL);

//I have just externalized this function to a scope/place where both the ajax and on change line of code can reference it.
function updateDDL(){

    var Records = response.d;
    $("#ddlUsers").empty();
    $.each(Records, function(){
    var _Key = this.User_ID;
        _Value = this.Username;
        $("#ddlUsers").append($("<option />").val(_Key).text(_Value));
    }
};

$.ajax(...., function (data) {
// Update ddl, the existing function you have.
// You should already have something like this.
updateDDL();  //Like this
});

顺便说一句:您可以直接将数据传递到updateDDL中,在updateDDL中使用$this来改进它,等等,但这不是您的问题的关键。您似乎对jquery及其使用的一些Javascript特性还不熟悉。花点时间去了解他们,你会得到很好的回报。首先,我将阅读有关ajax/jquery的示例,然后看看如何更新DOM。

您能更清楚一些吗?也许给我们看更多的代码?更改了所有问题。我想你的意思是,而不是。这不是问题,它工作正常。你可以检查选项的长度:$ddlUsers option.length