gpt4 book ai didi

php - 强制 JavaScript 按所需顺序执行

转载 作者:行者123 更新时间:2023-11-29 04:02:47 24 4
gpt4 key购买 nike

我在尝试让 Javascript 以我想要的顺序执行函数时遇到问题。我正在尝试获取 jQuery 模态表单以根据特定选择加载信息。我有两个 SELECT 框需要加载,但是第二个 SELECT 框的内容完全取决于第一个 SELECT 框的选择值。

我做了以下函数来请求我需要的信息:

function get_Subjects(varID, callback){
$.post("../vars/get_SID.php", { vid : varID },
function(result){
getInfo('tbsubjectdiv', '../vars/findSubjectlist.php?sid='+result);
});
callback();
}

function get_Selectedfields(varID, callback){
$.post("../vars/requestTblock.php", { vid : varID },
function(result){
populateForm('tbWiz', result);
document.form_tbWiz.varname.disabled = true;
$('.trSearch').hide();
$('.trValueset').hide();
});
callback();
}

function get_TextblockType(varID, callback){
$.post("../vars/requestVtype.php", { vid : varID },
function(result){
if(result == 0){ //Opzoeken
$('.trSearch').show();
}else if(result == 1){ //Datum vergelijken
$('.trSearch').show();
$('.trValueset').show();
}else if(result == 2){ //Percentage
//
}
});
callback();
}
  1. 第一个函数检查 MySQL 数据库中的选定值FIRST SELECT 字段,并将结果加载到第二个选择字段。

  2. 第二个函数请求其余的表单数据,并使用 populateForm() 填充表单。它还隐藏我表格的某些部分,为功能三做准备。

  3. 第三个函数主要是请求必须显示表单的哪些部分,因为这并不总是相同的。

这背后的整个想法是我想使用 populateForm() 来填充所有表单字段。为了使 populateForm() 正确设置选定的 SELECT 选项,特定的 SELECT 字段必须首先包含它需要选择的 OPTION。说得通。我尝试用我的第一个函数来确保这一点,它将加载所有选项。然后我尝试使用 get_Selectedfields() 来填充所有正确的值。但这不是发生的事情。无论我尝试做什么,第一个函数中的 getInfo() 总是被称为最后一个。这使得 populateForm() 无法选择正确的选项,这让我抓狂。

我试图通过这样做来“强制”执行顺序:

function getTextblock(var_ID){
get_Subjects(var_ID, function() {
get_Selectedfields(var_ID, function() {
get_Textblocktype(var_ID, function() {
// Done
});
});
});

当我意识到它仍然没有按我想要的方式工作时,我决定使用 Chrome 的开发者工具来检查所有内容的执行顺序。一切都按预期工作,但在最后它直接跳回到 getInfo(),这是我调用的第一个函数的一部分。我完全不知道为什么最后执行 getInfo() 。如果这只是在一开始就执行,也就是我希望它执行的位置,那么一切都会很好。

最佳答案

必须在post请求的回调函数中调用回调:

function get_Subjects(varID, callback){
$.post("../vars/get_SID.php", { vid : varID },
function(result){
getInfo('tbsubjectdiv', '../vars/findSubjectlist.php?sid='+result);
callback();
});

}

function get_Selectedfields(varID, callback){
$.post("../vars/requestTblock.php", { vid : varID },
function(result){
populateForm('tbWiz', result);
document.form_tbWiz.varname.disabled = true;
$('.trSearch').hide();
$('.trValueset').hide();
callback();
});

}

function get_TextblockType(varID, callback){
$.post("../vars/requestVtype.php", { vid : varID },
function(result){
if(result == 0){ //Opzoeken
$('.trSearch').show();
}else if(result == 1){ //Datum vergelijken
$('.trSearch').show();
$('.trValueset').show();
}else if(result == 2){ //Percentage
//
}
callback();
});

}

关于php - 强制 JavaScript 按所需顺序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com