Javascript jQuery等待select从数据库填充
我有一个ddl下拉列表,它在另一个ddl的更改事件之后从数据库中填充,但我想在从数据库中填充后更改此ddl的值 例如: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:
// 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