我的老板责成我在正在开发的网站的几个页面中添加一些Javascript。我是一个完全Javascript菜鸟(本质上是一个PHP编码器),但是我已经学习和使用Javascript两天了,直到现在,一切都进行得很顺利。
现在我遇到了一个问题。我认为它与可变范围有关,并且我以为我了解可变范围,但是我正在为这个非常(可能)非常简单的任务而苦苦挣扎。如果我有更多的时间来学习如何使用JS,在与大家见面之前,我会更加反对它,但是在下周一之前,我需要一些可行的方法。快到了..
代码在下面,解释在下面。
var activeTopic;
$.post("test.php",
{
request:"getActiveSection",
courseid:courseid
},
function (data, status) {
if (data != "none") {
activeTopic = data;
displayActiveTopic();
}
});
alert(activeTopic);
我正在使用Jquery的POST函数来调用test.php。 PHP获取课程ID并返回当前活动的主题。 PHP代码返回正确的值。我知道这一点,因为如果我发出alert(data);,则会显示正确的值。
但是,如果我警报(activeTopic);在函数外部,我注意到全局变量activeTopic并未更改。为什么?
先谢谢您的帮助。有空的时候,我将花更多的精力来学习JS。到目前为止,它很有趣……与PHP截然不同,但仍然很有趣。
最佳答案
这与范围无关,与时序无关。
您声明一个变量activeTopic
。
您发送HTTP(发布)请求
您提醒activeTopic
稍后,当HTTP响应到达时,将一个值分配给activeTopic
。
您需要处理当前为activeTopic
分配值的回调函数中的数据。