【发布时间】:2017-09-19 21:45:03
【问题描述】:
我尝试按特定顺序执行三 (3) 个 javascript。我的问题是每个 javascript 都使用前一个脚本设置的数据。我的第一个脚本在加载时执行,它从 SQL 数据库中获取数据并将其复制到我的网页正文中。下一个 javascript 需要其中一些数据才能正确执行 为了执行第二个脚本,我不仅必须等到前一个脚本完成执行,还要等到数据已加载到我的网页正文中,以便它可以由第二个脚本访问。第二个和第三个脚本之间的关系类似。我无法找到任何先前的问题和答案来解决使用先前脚本提取的数据的问题。您可以提供的任何帮助将不胜感激。这是我最近尝试的一个例子。
function myFunction()
{
document.getElementById("inputCounter").innerHTML = 1;
var recordCounter = document.getElementById("inputCounter");
var number = recordCounter.innerHTML;
querySQL(number);
document.onreadystatechange = function()
{
if (document.readystate == "complete")
{
getIPDetail('https://freegeoip.net/csv/');
}
};
}
myFunction() 在加载页面正文时执行。从 myFuntion() 调用的第一个脚本是 querySQL(number)。从 myFunction() 调用的第二个脚本是 getIPDetail('https://freegeoip/csv/')。我的问题是 detIPDetail... 没有执行,因为它需要 querySQL 插入到页面主体上的 div 中的数据。
【问题讨论】:
-
您应该考虑函数而不是脚本的上下文。当您加载浏览器时,如果您同时将它们全部包含在您的网页中,它们将同时处理。如果您的功能是按函数组织的,那么只需在需要时调用所述函数即可。
-
“我的第一个 javascript,我的第二个 javascript”是什么意思?你是在说
<script>s 吗? -
您必须在此处粘贴函数 querySQL() 和 getIPDetail() 的实现,以便我们进一步帮助您。
-
问题的可能原因是 getIPDetails() 在 ajax 完成时立即被调用,并且在回调函数(可能在 querySQL 中定义)接收响应并将其插入隐藏 div 之前的片刻。解决此问题的一种简单方法可能是 - 在初始化期间将 div 保持为空白。并在 if(document.readystate=='complete') 块中使用以下代码: var intvl = setInternal(function() { if(document.getElementById('divid').innerHTML!="") { getIPDetail(); clearInterval(intvl); } }, 50);
标签: javascript php seq