这是一个奇怪的疑问,但确实如此......
我在页面中有一个按钮,它发出 Ajax 请求,当我得到答案时,我将其写入页面,然后将其称为调整页面元素的函数。当我第一次单击该按钮时,不会调用此函数,但在下一个请求中会调用该函数。
但是......如果我在函数范围内放置一个警报,当我发出相同的第一个ajax请求并等待调用该函数的答案时,它会显示警报的内容并调整我的页面元素。
嗯...我不认为这有任何逻辑,但如果这对任何人来说都是响亮的铃声,我很感谢您的帮助。
编辑:
function HandleResponseCellVehicleReport()
{
if (XmlHttp.readyState == 4) {
if (XmlHttp.status == 200) {
WriteCellVehicleReport(XmlHttp.responseText);
}
else {
alert("Problema: " + XmlHttp.statusText);
}
}
}
function WriteReport(myJSONtext) {
(....)
EndLoad(document);
EnableButtons(document);
adjustPageElements(pageId,document);
}
function adjustPageElements(client, __document) {
var viewportwidth;
var viewportheight;
if (!__document) {__document = document;}
(....)
}
我将警报放置在 adjustmentPageElements 函数的开头。
谢谢
最佳答案
我认为这是因为你的ajax调用是异步的,在你尝试将内容放入页面元素之前,尚未从后端脚本中获取内容。看看this 。如果您进行同步 ajax 调用,浏览器将等待,直到内容被解析回来。另请参阅 this article
关于JavaScript - 为什么函数没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787277/