在页面加载时调用多个Javascript函数
我一直在尝试在页面加载时从html主体调用4个JS函数。 这些函数中的每一个都调用jspservlet从数据库中获取数据并填充到相应的列表框中。我正在编辑屏幕上工作,试图在其中预填充列表框 我正在尝试这样的东西:在页面加载时调用多个Javascript函数,javascript,html,jsp,Javascript,Html,Jsp,我一直在尝试在页面加载时从html主体调用4个JS函数。 这些函数中的每一个都调用jspservlet从数据库中获取数据并填充到相应的列表框中。我正在编辑屏幕上工作,试图在其中预填充列表框 我正在尝试这样的东西: //call the JS to prepopulate the metadata function populateOnPageLoad(){ populateA(); populateB(); populateC
//call the JS to prepopulate the metadata
function populateOnPageLoad(){
populateA();
populateB();
populateC();
populateD();
}
我还尝试在body onload中直接调用所有4个函数。
似乎它只能调用populateD()并在列表框中显示数据。我已经在insert操作中测试了其中的每一个,JSP servlet工作得很好。我甚至更改了这些函数的顺序,以检查它是否只调用了最后一个函数,但它似乎不是这样工作的
这里可能存在什么问题以及可能的解决方案
谢谢 您应该查看
window.onload
而不是document.body.onload
此外,不要设置
window.onload
使用window.addEventListener('load',populateOnPageLoad,false)代码>或
window.addEventListener('load',populateA,false);
window.addEventListener('load',populateB,false);
window.addEventListener('load',populateC,false);
window.addEventListener('load',populateD,false);
如果您使用的是ajax,请确保您没有覆盖以前调用的XMLHttpRequest
对象(即确保它们不共享作用域/变量名)试试这个
function populateOnPageLoad(){
setTimeOut(populateA(),500);
setTimeOut(populateB(),500);
setTimeOut(populateC().500);
setTimeOut(populateD(),500;
}
加载页面时,我正在将记录id(我正在尝试编辑)传递给populateOnPageLoad()。当我这样做时,它会将上一条记录中的相关数据填充到相应的列表框中是否可以添加更多代码。。?像您的方法populateA()
,populateB()
…一样,这些函数放在哪里?在“onload”事件处理程序中,您是否能够检查网络活动,以查看是否每个函数都发出了每个ajax请求?为什么要在页面加载时执行ajax调用?在几乎所有情况下,您都应该能够在页面上直接填充数据,而不是进行ajax调用。Reimius,我正在从下拉列表中选择一个值,我正在进行ajax调用,以填充插入操作中的4个列表框。但是在我的编辑操作中,我预先选择了下拉值,因此没有事件填充列表框。我正在尝试使用相同的AJAX调用填充数据。Sshac,我是否应该在js函数中添加window.addeventlistener(),然后从页面加载中调用它?我正在使用Ajax填充列表框。在插入操作中,我通过下拉更改事件进行处理。但在编辑操作中,当下拉LOD时,我不会第一次看到事件,因为它具有来自insert的预选值。我自己能够解决这个问题,但花了很长时间才找到解决方案。加载页面时,我正在将记录id(我正在尝试编辑)传递给populateOnPageLoad()。当我这样做时,它会将上一条记录中的相关数据填充到相应的列表框中。