我的老板责成我在正在开发的网站的几个页面中添加一些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分配值的回调函数中的数据。

09-25 15:12