我正在尝试在名为#RECALRow1、#RECALCol1、#RECALBodySum 的表中填充不同的单元格。每个都是从数据库中填充的。我正在使用 AJAX,特别是 jQuery 的负载。
最初我使用了一些函数——见下面的版本 1——它们有效(这些函数中的代码在版本 2 中有效)。这行得通。
我很晚才意识到这些函数中的代码有多么相似。版本 2 显示了没有函数的代码,说明了相似性。这也奏效了。(valTable 已在前面定义 - 定义未在下面显示)。
然后似乎“很明显”我应该编写一个只接受两个参数的通用函数。用不同的参数对该函数进行三次调用,肯定可以工作(!)事实上,似乎只调用了第三个函数;前两个甚至没有成功生成控制台消息。
我想知道我是否在回调中遗漏了一些东西 - 我阅读了如何从异步调用返回响应?- 但我看不出我需要它们。也许我将要学习一些非常基础的实用 AJAX 知识。
版本 1
单独的函数,每个函数都使用 jQuery 加载。这行得通。[旁白 - ASP 设置默认选择值]
UpdateCol1Possibilities(); // sets content for #RECALCol1
UpdateRow1Possibilities();
UpdateBodySumPossibilities();
版本 2
直接调用jQuery加载,无需封装。这行得通。[除此之外 - 我们需要调整默认选择值]
$('#RECALRow1').load(
"/_RECAL/AJAX/AJAXSetGroupbyList.asp", // URL
{ // data - no need for callback
"RECALtable":valTable,
"RECALCol1Row1Id":'RECALRow1'
}); // close load
$('#RECALCol1').load(
"/_RECAL/AJAX/AJAXSetGroupbyList.asp", // URL
{ // data - no need for callback
"RECALtable":valTable,
"RECALCol1Row1Id":'RECALCol1'
}); // close load
$('#RECALBodySum').load(
"/_RECAL/AJAX/AJAXSetGroupbyList.asp", // URL
{ // data - no need for callback
"RECALtable":valTable,
"RECALCol1Row1Id":'RECALBodySum'
}); // close load
版本 3
通用函数,它使用 jQuery 加载。这不起作用。
var RealSelect = _.debounce(function(IdToChange) {
console.log('Calling RealSelect changing Id: ' + IdToChange);
$('#' + IdToChange).load(
"/_RECAL/AJAX/AJAXSetGroupbyList.asp", // URL
{ // data
"RECALtable":$('#RECALtable').children().val(),
"RECALCol1Row1Id":IdToChange
}
, // callback
function() { // callback function - success
// alert('successful callback!');
} // close callback function, close load
) // close load
}
,50); // end RealSelect function
RealSelect('RECALCol1'); // sets content for #RECALCol1
RealSelect('RECALRow1');
RealSelect('RECALBodySum');
// Only #RECALBodySum is populated
}